[英]Why can't I create a 2D ArrayList?
我正在嘗試編寫以下代碼...
static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][];
這行不通。 如果我嘗試創建ArrayList<RssItem>
的列表,我在做什么錯?
您不能創建通用類型的數組。 因此,您將需要使用演員表。
List<RssItem>[][] arr = (List<RssItem>[][]) new ArrayList<?>[2][2];
但是仍然可以實現List List 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];
注意 :-
您不能在RHS
上將specific
類型用作類型參數。 您將必須使用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:-
請不要使用List
的二維數組。 那相當於3-D陣列。 即使您獲得上述循環以某種方式工作。 將來會使您的代碼混亂。 和你的生活地獄。 您應該考慮Java中還有許多其他數據結構,例如Map
,在這種情況下很有用。
即使將List
最多3個級別也是一個非常糟糕的主意。 因此,請更改您的設計。
數組列表的通用數組=數組列表的數組列表
那將是
ArrayList<ArrayList> list = new ArrayList<ArrayList>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.