我们如何在 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<List<YourType>>
。作为实现,您可以使用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 中增加二维向量的大小?的主要内容,如果未能解决你的问题,请参考以下文章