我正在尝试编写以下代码...
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: -
请不要使用List
. 这相当于一个 3-D 数组。即使你让上面的循环以某种方式工作。它将使您的代码将来变得混乱。和你的生活地狱。Java 中还有许多其他数据结构,您应该考虑,比如 a Map
,它在这种情况下很有用。
甚至,拥有List
多达 3 个级别是一个非常糟糕的主意。所以,请改变你的设计。
数组列表的通用数组 = 数组列表的数组列表
那将是
ArrayList<ArrayList> list = new ArrayList<ArrayList>();