我正在尝试编写以下代码......
static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][];
这不起作用。如果我想创建一个ArrayList<RssItem>
的列表?
答案 0 :(得分:2)
您无法创建泛型类型的数组。所以你需要使用演员。
List<RssItem>[][] arr = (List<RssItem>[][]) new ArrayList<?>[2][2];
但实施List of List ArrayList<ArrayList<Type>>
List<ArrayList<RssItem>> list = new ArrayList<ArrayList<RssItem>>();
arr[0][0] = new ArrayList<Integer>();
arr[0][0].add(10);
答案 1 :(得分:2)
您需要在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);
}
}
P.S。: -
请不要使用List
的二维数组。这相当于一个三维数组。即使你以某种方式让上述循环工作。这将使你的代码在将来变得混乱。而你的生活地狱。 Java中还有许多其他数据结构,您应该考虑使用Map
,这在这种情况下非常有用。
即使,List
达到3级也是一个非常糟糕的主意。所以,请改变你的设计。
答案 2 :(得分:0)
Array列表的通用数组=数组列表的数组列表
那就是
ArrayList<ArrayList> list = new ArrayList<ArrayList>();