Java中的ArrayList嵌套ArrayList的问题

3
嗨,当我想要像向量一样拥有向量(元素当然应该是有序的)时,我考虑使用数组列表的数组列表,但在C++中,我会这样访问元素:v.at(i).at(j)=5;,当我需要添加新元素时:v.at(i).push_back(value);。那么在Java中该怎么做呢?因为我只能访问外部ArrayList,但我不知道如何添加新元素...还有没有更好的方法在Java中模拟C++向量的向量?
附注:(它不是一个3*2的矩阵,但每个ArrayList可能具有不同的大小)
4个回答

7

声明一个 ArrayList,其中包含 ArraList<Integer>

ArrayList<ArrayList<Integer>> v = new ArrayList<ArrayList<Integer>>();
v.add(new ArrayList<Integer>());

v.get(0).add(new Integer(5));
v.get(0).add(new Integer(10));
System.out.println(v.get(0).get(0)); // => 5
System.out.println(v.get(0).get(1)); // => 10

1
不应使用 new Integer(..)。让Java自动装箱。或者,最好使用 Integer.valueOf(..) - Bozho

3
List<List<Integer>> l = new ArrayList<List<Integer>>();

// initialize the inner lists
for (int i = 0; i < 10; i++) 
    l.add(new ArrayList<Integer>());


// now you can use it as you would like
l.get(i).add(5);
l.get(i).set(0, 3);

停止使用Vector类!抱歉有些粗鲁,但是Vector类已经被“弃用”了5年左右。 - helpermethod
我知道,我只是编辑并从ArrayList更改为Vector。我以为他需要一个同步版本... - dacwe
改回了ArrayList(现在使用List接口 - 更加简洁)。 - dacwe

1
在Java中,您可以拥有 List<List<Integer>>。访问元素的方式是 list.get(i).get(j)。同样地,添加元素也可以这样做:list.get(i).add(var)。还可以查看一下 set(..) 方法。

0

我还无法在先前的评论中发表评论,因此我会在这里发布。

正如NetBeans所说,不必编写

ArrayList< ArrayList< Integer>> v = new ArrayList< ArrayList< Integer>>();

因为参数是多余的,你可以这样写:

ArrayList< ArrayList< Integer>> v = new ArrayList<>();

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