我試圖寫下面的代碼...爲什麼我無法創建2D ArrayList?
static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][];
這是行不通的。我做錯了什麼,如果我正在創建一個ArrayList<RssItem>
的列表?
我試圖寫下面的代碼...爲什麼我無法創建2D ArrayList?
static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][];
這是行不通的。我做錯了什麼,如果我正在創建一個ArrayList<RssItem>
的列表?
你需要給在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
時纔會指定特定類型。
要添加的東西到你的陣列,您可以使用此類型的循環: -
NOT測試
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 D陣列List
。這相當於一個三維陣列。即使你讓上面的循環以某種方式工作。它會使您的代碼在未來混亂。和你的人生地獄。在Java中還有很多其他數據結構,您應該考慮一下,如Map
,這在這種情況下很有用。
即使有List
高達3級是一個非常糟糕的主意。所以,請改變你的設計。
您不能創建一個通用類型的數組。所以你需要使用演員。
List<RssItem>[][] arr = (List<RssItem>[][]) new ArrayList<?>[2][2];
但它仍然會是很好的實現List列表ArrayList<ArrayList<Type>>
List<ArrayList<RssItem>> list = new ArrayList<ArrayList<RssItem>>();
arr[0][0] = new ArrayList<Integer>();
arr[0][0].add(10);
ArrayList的數組列表的一個數組列表
@MaxUsanin爲此添加了示例:) –
數組列表的一個通用的排列=
這將是
ArrayList<ArrayList> list = new ArrayList<ArrayList>();
ArrayList rssItems = new ArrayList ();我想添加二維數組中的rssItems –
@MaxUsanin添加代碼。你可以嘗試一下。 –
我不明白它是如何工作的......但它的工作原理=) –