1. ホーム
  2. java

[解決済み] Javaでリストを配列に変換する [重複]。

2022-03-15 10:16:58

質問

を変換するにはどうすればよいですか? ListArray をJavaで作成しますか?

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

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 .

解決方法は?

どちらかです。

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の検査から。

コレクションを配列に変換する方法には2つのスタイルがあります。 サイズの配列(例えば c.toArray(new String[c.size()]) ) または 空の配列を使って(例えば c.toArray(new String[0]) .

において 古いバージョンのJavaでは、あらかじめサイズが決められた配列を使用することが推奨されていました。 適切なサイズの配列を作成するために必要なリフレクションコールは はかなり遅かったです。 しかし、OpenJDK 6の後期アップデート以降、この呼び出しは が組み込まれ、空の配列バージョンのパフォーマンスが向上しました。 は、サイズ変更前と同じか、場合によってはそれ以上です。 のバージョンです。また、サイズ変更前の配列を渡すことは、同時並行処理や の間でデータ競合が発生する可能性があるため、同期化されたコレクションでは サイズ toArray を呼び出すと、余分なヌルが発生する可能性があります。 コレクションが同時に縮小された場合、配列の末尾にある を実行する。

この検査では 統一されたスタイル:空の配列を使用する(これは 最近のJavaでは、サイズ調整済みの配列を使用します。 古いJavaバージョンまたはHotSpotベースでないJVM)。