Java初始化二维ArrayList

6

我希望做一个2D动态ArrayList的示例:

[1][2][3]
[4][5][6]
[7][8][9]

我使用了以下代码:

 ArrayList<ArrayList<Integer>> group = new ArrayList<ArrayList<Integer>>();
        group.add(new ArrayList<Integer>(1, 2, 3));

我该如何初始化这个ArrayList?


如何初始化ArrayList? - Sashi Kant
2个回答

8
如果内部列表不需要特别是具体的 ArrayList,在Java 7中执行此类初始化的一种方式如下:
ArrayList<List<Integer>> group = new ArrayList<List<Integer>>();
group.add(Arrays.asList(1, 2, 3));
group.add(Arrays.asList(4, 5, 6));
group.add(Arrays.asList(7, 8, 9));
for (List<Integer> list : group) {
    for (Integer i : list) {
        System.out.print(i+" ");
    }
    System.out.println();
}

点此查看ideone上的演示.


它可以工作,但如何展示呢?迭代器<Integer> it = ArrayList.iterator(); while(it.hasNext()) { Integer a = it.next(); System.out.println(a); } - user2458768
@user2458768 请查看打印数组的代码(请查看更新后的演示,在ideone上运行)。 - Sergey Kalinichenko
1
这太不符合直觉和难以阅读了... 当然我不是在批评你,而是在批评Java。 - shinzou
重要提示:如果您想编辑,例如使用group.get(1).add(999)4, 5, 6数组添加一个元素,它将不允许您这样做。这是因为Arrays.asList将返回一个AbstractList而不是ArrayList。(如果需要编辑列表,请将其包装在构造函数中,如ArrayList<>(Arrays.asList(4, 5, 6))。https://ideone.com/0WEVZ4 - kaushalpranav

1

使用

group.add(new ArrayList<Integer>(Arrays.asList(1, 2, 3)));

ArrayList在构造函数中有一个Collection参数。

如果您将group定义为

List<List<Integer>> group = new ArrayList<>();
group.add(Arrays.asList(1, 2, 3));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接