我们如何在 Java 中增加二维向量的大小?

Posted

技术标签:

【中文标题】我们如何在 Java 中增加二维向量的大小?【英文标题】:How we can increase size of 2d vector in Java? 【发布时间】:2013-11-09 18:59:29 【问题描述】:

假设我们在 Java 中定义了一个2d vector。第一个维度的大小是10,第二个维度的大小是1。现在,如果我们想增加这个2d vector 的第一个维度的大小,我们应该怎么做?

假设我们想将数字 1 添加到第 30 个单元格(即 v1[29][0]=1),但我们的向量大小是 10

这是我的 Java 代码:

Vector [][] v1 = new Vector [10][];

for (int i=0 ; i<10; i++)
    if (i==0) 
        v1[i]=new Vector[1];
    
    else
        v1[i]=v1[0];
v1[0][0]=new Vector(1);

【问题讨论】:

也许是java.util.List的实现? 除非你需要使用数组,否则我建议使用List&lt;List&lt;YourType&gt;&gt;。作为实现,您可以使用Vector。顺便说一句,如果你的第二维总是1,那么一个简单的一维数组就足够了。 感谢 cmets,但我还没有得到好的答案。 你误解了你在做什么。这段代码实际上创建了一个 3 维数据结构:一个包含数组的数组,每个数组都包含向量。数组与 Java 中的向量不同。我建议您在尝试继续之前阅读数组和向量之间的区别。 【参考方案1】:

您需要分配新的更大的数组,例如v1 = new Vector[30][]

注意Vector 是同步的。如果不需要线程安全实现,建议使用ArrayList 代替Vector

此外,请确保您了解自己在做什么。如果您只需要“将第 1 个单元格添加到第 30 个单元格(即 v1[30][0]=1)”,那么 int v1 = new int[31][] 应该足够了,没有任何向量。顺便说一句,第 30 个单元格是 v1[29][0],而不是 v1[30][0],请注意这个常见的错误。

【讨论】:

以上是关于我们如何在 Java 中增加二维向量的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何声明一个可以接受任何大小的二维向量参数?

如何迭代未知大小的二维向量?

我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]

如何使用 Quiver Plot 在向量场中显示速度大小?

如何通过访问对象来计算二维向量的总和

如何访问使用固定大小定义的向量?