0

我正在尝试编写以下代码...

static ArrayList<RssItem>[][] list = new ArrayList<RssItem>[][]; 

这行不通。如果我试图创建一个列表,我做错了ArrayList<RssItem>什么?

4

3 回答 3

2

您不能创建泛型类型的数组。所以你需要使用演员表。

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);
于 2012-10-27T11:33:59.550 回答
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);
       }
    }

PS: -

请不要使用List. 这相当于一个 3-D 数组。即使你让上面的循环以某种方式工作。它将使您的代码将来变得混乱。和你的生活地狱。Java 中还有许多其他数据结构,您应该考虑,比如 a Map,它在这种情况下很有用。

甚至,拥有List多达 3 个级别是一个非常糟糕的主意。所以,请改变你的设计。

于 2012-10-27T11:34:08.210 回答
0

数组列表的通用数组 = 数组列表的数组列表

那将是

ArrayList<ArrayList> list = new ArrayList<ArrayList>();
于 2012-10-27T12:03:15.337 回答