【问题标题】:How to write vector in vector in java [closed]如何在java中的向量中写入向量[关闭]
【发布时间】:2016-03-13 12:58:32
【问题描述】:

我以前写c++是这样的vectorV[size] or vector> 但我不知道如何用java编写它。 我试着像这样写 Vector> x = new Vector>(size) 但是当我想像这样使用它 x.get(index).add(new object) 时,它会有一个 ArrayIndexOutOfBoundsException 。我该如何解决它,请帮帮我,谢谢。

【问题讨论】:

  • 请显示更多非工作代码。如果我们能够完全理解您可能做错了什么,这将有所帮助。
  • 您可能不想要Vector,因为它已损坏且垃圾。使用ArrayList
  • @Idos 你介意解释一下Vector 的“破碎和垃圾”是什么吗?
  • @Idos 公认的答案是,除非您想要同步实现 List,否则不应使用 Vector。哪个是对的。并且与“破碎和垃圾”完全不同。顺便说一句,您可能希望通过在您的评论前加上 @ 和他们的名字来回复他人,否则他们看不到您的回复。

标签: java vector indexoutofboundsexception


【解决方案1】:

关键是您可以将 C++ 向量分配为最初包含 size 实例,其中这些元素是空向量。

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

Java Vector 不一样。即使您使用capacity 参数构造它,您所做的只是要求 space 为向量中保留那么多元素。向量的大小最初为零(除非您使用非空集合作为参数调用 Vector(Collection&lt;? extends E&gt;) 构造函数)。

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(以完全相同的方式)。

【讨论】:

  • 是的!真的非常感谢!
【解决方案2】:

如果我没猜错,你需要嵌套向量。您可以在 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

如果您需要澄清,请告诉我。

【讨论】:

  • 非常感谢。以同样的方式在向量中写入向量!
猜你喜欢
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多