public class XXXX{
private List<Integer>[] a;
public XXXX(int num)
{
a = new ....?
}
}
aをどのように新しくする必要がありますか?
public class XXXX{
private List<Integer>[] a;
public XXXX(int num)
{
a = new ....?
}
}
aをどのように新しくする必要がありますか?
NPE: 「配列とジェネリックはうまくいかない」
リストのリストに移動
List<List<Integer>> a = new ArrayList<List<Integer>>();
または二重配列
int[][] a = new int[5][5];
リストの配列を作成できますが、初期化中に型を使用することはできません。
List<Integer>[] lists=new List[10];
//insertion
for(int i=0;i<10;i++){
lists[i]=new ArrayList<Integer>();
lists[i].add(i);
lists[i].add(i+1);
}
//printing
for(List<Integer> list:lists){
System.out.println(list.size());
}
なぜこれが機能するのですか?lists
変数は、データ型が の配列データ構造を指しているためですList<Integer>
。この配列には、 type のさまざまなオブジェクトへの一連の参照が含まれています。これが、実行しようとしてもコンパイルできないList<Integer>
理由です。lists[i]=new ArrayList<String>();
ただし、配列自体を初期化する場合、List オブジェクトのタイプを List として指定する必要はありません。JVM の観点からは、Integer オブジェクトの List と Object オブジェクトの List には、logn と同じバイト数が必要になるためです。サイズは同じです。唯一の制約は、配列メンバーを値に設定するときに発生します (List 型の - それ以外のものである必要はありList<Integer>
ません)。
List[]
を a に型キャストできますList<Integer>[]
が、最終結果と JVM の動作は同じです。
これは機能します
int arraySize = 10;
List<Integer>[] a = (List<Integer>[]) new List[arraySize];
整数のリストを含むことができる(サイズ10の)配列を作成します
a = (List<Integer>[]) new List[num];
for(int i = 0; i < num; i++)
a[i] = new ArrayList<Integer>();
本当に、なぜとして宣言a
しないのList<List<Integer>>
ですか?
あなたはすることができますList<Integer> a=new ArrayList<Integer>();
が、aはジェネリックであってはなりません
リストはJavaのインターフェースです!
ArrayList、linket list、vector、stack などのインスタンスの参照を List データ型の変数に与えることができます
次のいずれかを使用できます。
a = new ArrayList<Integer>();
a = new LinkedList<Integer>();
a = new Vector()<Integer>;
a = new Stack()<Integer>;