我曾经写过类似这个vectorV [size]或vector>的c ++。 但我不知道如何用java编写它。 我试着写这个Vector> x = new Vector>(大小)但是当我想像x.get(index).add(新对象)一样使用它时,它会有一个ArrayIndexOutOfBoundsException。如何解决它,帮助我plz,thx。
答案 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
告诉我你是否需要澄清。