次のコードを書き込もうとしています...
static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][];
これはうまくいきません。のリストを作成しようとしている場合、何が間違っていますArrayList<RssItem>
か?
ジェネリック型の配列は作成できません。したがって、キャストを使用する必要があります。
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);
RHS にサイズを指定する必要があります: -
static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][];
のサイズcolumn
は必要ありませんが、指定することもできます: -
static List<RssItem>[][] arr = (List<RssItem>[][])new List<?>[4][5];
注: -
specific
の型パラメーターとして型を指定することはできませんRHS
。を使用する必要がありますWildCard
。list
特定のタイプは、配列でインスタンス化する場合にのみ指定されます。
配列に何かを追加するには、この種のループを使用できます: -
未検証
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 次元配列と同等です。上記のループが何らかの形で機能したとしても。将来、コードが混乱します。そしてあなたの人生地獄。Map
Java には他にも多くのデータ構造があり、そのような状況で役立つ のように考慮する必要があります。
List
レベルが 3 までというのは非常に悪い考えです。ですので、デザインを変更してください。
配列リストの汎用配列 = 配列リストの配列リスト
そして、それは
ArrayList<ArrayList> list = new ArrayList<ArrayList>();