Javaでリストを配列に変換する [重複] 質問する

Javaでリストを配列に変換する [重複] 質問する

ListJava でを に変換するにはどうすればよいですかArray?

以下のコードを確認してください:

ArrayList<Tienda> tiendas;
List<Tienda> tiendasList; 
tiendas = new ArrayList<Tienda>();

Resources res = this.getBaseContext().getResources();
XMLParser saxparser =  new XMLParser(marca,res);

tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();

this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);  

配列tiendasに の値を設定する必要がありますtiendasList

ベストアンサー1

どちらか:

Foo[] array = list.toArray(new Foo[0]);

または:

Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array

これは参照型の配列に対してのみ機能することに注意してください。プリミティブ型の配列の場合は、従来の方法を使用します。

List<Integer> list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);

アップデート:

list.toArray(new Foo[0]);現在はではなくを使用することをお勧めしますlist.toArray(new Foo[list.size()]);

JetBrains Intellij Idea 検査から:

コレクションを配列に変換するには、事前にサイズ設定された配列を使用する方法 ( c.toArray(new String[c.size()])など) と、空の配列を使用する方法 ( c.toArray(new String[0]) など)の 2 つのスタイルがあります。

以前のバージョンの Java では、適切なサイズの配列を作成するために必要なリフレクション呼び出しが非常に遅いため、サイズがあらかじめ設定された配列を使用することが推奨されていました。ただし、OpenJDK 6 の最近の更新以降、この呼び出しは組み込み済みとなり、サイズがあらかじめ設定されたバージョンと比較して、空の配列バージョンのパフォーマンスは同じか、場合によってはさらに向上しました。また、サイズがあらかじめ設定された配列を渡すことは、同時実行または同期されたコレクションでは危険です。これは、操作中にコレクションが同時に縮小された場合、サイズtoArray呼び出しの間でデータ競合が発生し、配列の最後に余分な null が生成される可能性があるためです。

この検査により、空の配列を使用する (最新の Java で推奨) か、事前にサイズ設定された配列を使用する (古いバージョンの Java または HotSpot ベース以外の JVM では高速になる可能性がある) という統一されたスタイルに従うことができます。

おすすめ記事