-6
public class XXXX{
    private List<Integer>[] a;
    public XXXX(int num)
    {
        a = new ....?
    } 
}

aをどのように新しくする必要がありますか?

4

6 に答える 6

4

NPE: 「配列とジェネリックはうまくいかない」

リストのリストに移動

List<List<Integer>> a = new ArrayList<List<Integer>>();

または二重配列

int[][] a = new int[5][5];
于 2013-03-26T12:04:59.870 に答える
4

リストの配列を作成できますが、初期化中に型を使用することはできません。

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 の動作は同じです。

于 2013-03-26T12:30:09.957 に答える
2

これは機能します

int arraySize = 10;
List<Integer>[] a = (List<Integer>[]) new List[arraySize];

整数のリストを含むことができる(サイズ10の)配列を作成します

于 2013-03-26T12:12:29.567 に答える
0
a = (List<Integer>[]) new List[num];
for(int i = 0; i < num; i++)
    a[i] = new ArrayList<Integer>();

本当に、なぜとして宣言aしないのList<List<Integer>>ですか?

于 2013-03-26T12:03:44.427 に答える
0

あなたはすることができますList<Integer> a=new ArrayList<Integer>(); が、aはジェネリックであってはなりません

于 2013-03-26T12:42:09.177 に答える
-3

リストはJavaのインターフェースです!

ArrayList、linket list、vector、stack などのインスタンスの参照を List データ型の変数に与えることができます

次のいずれかを使用できます。

a = new ArrayList<Integer>();
a = new LinkedList<Integer>();
a = new Vector()<Integer>;
a = new Stack()<Integer>;
于 2013-03-26T12:04:06.297 に答える