这可能是一个奇怪的问题,但是...
如何使用List / ArrayList作为2D数组的类型?
如果我不能正确解释自己的话:
int[][] arrayName = new int[9][9];
在此示例中,我想使用ArrayList<int>
而不是int
,但是我不允许这样做。要么,否则我可能使用了错误的语法。
编辑: 看来我对我的问题还不够清楚(并写了一个误导性的标题,我不好,现在就解决它。)
我所拥有的是一个由2D数组构成的网格,如上面的示例,但我希望将ArrayList of Integers作为此网格的单个单元格的元素。
ArrayList<Integer>[][] grid = new ArrayList<Integer>()[9][9]
类似这样的事情。这是正确的语法吗?我什至可以这样做吗?
答案 0 :(得分:0)
由于您不能在集合中使用原始类型(在您的情况下为int),因此需要使用Interger包装器
因此二维数组列表应为
List<List<Interger>> array = new ArrayList<List<Interger>>();
答案 1 :(得分:0)
<>
之间必须为class
。就您而言,Integer
要制作2D ArrayList
,您可以这样做:
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> b = new ArrayList<Integer>();
b.add(1); b.add(2); b.add(3); b.add(4); b.add(5); b.add(6);
ArrayList<Integer> c = new ArrayList<Integer>();
c.add(3); c.add(7); c.add(1); c.add(3); c.add(9);
ArrayList<Integer> d = new ArrayList<Integer>();
d.add(8); d.add(3); d.add(3); d.add(8); d.add(3); d.add(6);
ArrayList<Integer> e = new ArrayList<Integer>();
e.add(7); e.add(2); e.add(8);
a.add(b); a.add(c); a.add(d); a.add(e);
for(ArrayList<Integer> aux : a) {
for(Integer temp : aux) {
System.out.print(temp + " ");
}
System.out.println("");
}
//1 2 3 4 5 6
//3 7 1 3 9
//8 3 3 8 3 6
//7 2 8