如何在矢量中写入矢量在java中

时间:2016-03-13 12:58:33

标签: java vector indexoutofboundsexception

我曾经写过类似这个vectorV [size]或vector>的c ++。 但我不知道如何用java编写它。 我试着写这个Vector> x = new Vector>(大小)但是当我想像x.get(index).add(新对象)一样使用它时,它会有一个ArrayIndexOutOfBoundsException。如何解决它,帮助我plz,thx。

2 个答案:

答案 0 :(得分:1)

关键是你能够将C ++向量分配给最初包含size个实例,其中这些元素是空向量。

auto vectorOfVectors = vector<vector<T>>(10);
cout << vectorOfVectors.size() << endl;  // Outputs 10.

你对Java Vector不是一回事。即使您使用capacity参数构造它,您所做的只是要求 space ,以便在向量中保留许多元素。向量的大小最初为零(除非您使用非空集合作为参数调用Vector(Collection<? extends E>)构造函数)。

Vector<Vector<T>> vectorOfVectors = new Vector<>(10);
System.out.println(vectorOfVectors.size());  // Outputs 0.

如果要分配带有size元素的向量,则需要明确地执行此操作:

Vector<Vector<T>> vectorOfVectors = new Vector<>(size);
for (int i = 0; i < size; ++i) {
  vectorOfVectors.add(new Vector<T>());
}

但是,Vector是一个强烈弃用的类。您可能希望改为使用ArrayList(以完全相同的方式)。

答案 1 :(得分:0)

如果我找对你,你需要嵌套的矢量。您可以在Java中使用嵌套的ArrayList而不是。

ArrayList<ArrayList<Object>> arrayList = new ArrayList<ArrayList<Object>>();
ArrayList<ArrayList<Object>> al1 = new ArrayList<ArrayList<Object>>();
ArrayList<ArrayList<Object>> al2 = new ArrayList<ArrayList<Object>>();
arrayList.add(al1);
arrayList.add(al2);
arrayList.get(0).add(new Object()); // retrieves al1

告诉我你是否需要澄清。