0

次のコードを書き込もうとしています...

static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][]; 

これはうまくいきません。のリストを作成しようとしている場合、何が間違っていますArrayList<RssItem>か?

4

3 に答える 3

2

ジェネリック型の配列は作成できません。したがって、キャストを使用する必要があります。

List<RssItem>[][] arr = (List<RssItem>[][]) new ArrayList<?>[2][2];

しかし、それでもリストのリストを実装するのは良いことですArrayList<ArrayList<Type>>

List<ArrayList<RssItem>> list = new  ArrayList<ArrayList<RssItem>>();
arr[0][0] = new ArrayList<Integer>();
arr[0][0].add(10);
于 2012-10-27T11:33:59.550 に答える
2

RHS にサイズを指定する必要があります: -

static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][];

のサイズcolumnは必要ありませんが、指定することもできます: -

static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][5];

: -

specificの型パラメーターとして型を指定することはできませんRHS。を使用する必要がありますWildCardlist特定のタイプは、配列でインスタンス化する場合にのみ指定されます。

配列に何かを追加するには、この種のループを使用できます: -

未検証

    List<RssItem>[][] arr = (List<RssItem>[][])new ArrayList<?>[4][4];

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            arr[i][j] = new ArrayList<RssItem>();

            arr[i][j].add(new RssItem());
        }
    }

    for (List<RssItem>[] val: arr) {
       for (List<RssItem> val2: val) {
           System.out.println(val2);
       }
    }

PS: -

の 2 次元配列は使用しないでくださいList。これは 3 次元配列と同等です。上記のループが何らかの形で機能したとしても。将来、コードが混乱します。そしてあなたの人生地獄。MapJava には他にも多くのデータ構造があり、そのような状況で役立つ のように考慮する必要があります。

Listレベルが 3 までというのは非常に悪い考えです。ですので、デザインを変更してください。

于 2012-10-27T11:34:08.210 に答える
0

配列リストの汎用配列 = 配列リストの配列リスト

そして、それは

ArrayList<ArrayList> list = new ArrayList<ArrayList>();
于 2012-10-27T12:03:15.337 に答える