[英]LibGDX: how do I multiply vector with scalar without modifing original vector? (simple gravity system in Java game)
[英]How do I copy one vector to another vector in Java without updating the original vector?
我正在将矢量复制到另一个相同类型的矢量。并修改复制矢量但原始矢量也在更新我不明白为什么?
Vector<allocated>finished_copy=new Vector<allocated>();
finished_copy=finished;
我在修改之前和之后打印原始矢量的值
for(int k=0;k<finished.size();k++) {
System.out.print(finished.elementAt(k).output);
System.out.print(finished.elementAt(k).step);
System.out.println();
}//some modification on finished_copy
并且打印原件但两者都不同
请帮帮我
你没有做任何副本。 您所做的只是将相同的Vector分配给另一个变量:
之前:
finished ------> [a, b, c, d]
后:
finished ------> [a, b, c, d]
^
|
finished_copy ---/
以下是如何将Vector的所有元素复制到另一个元素中:
Vector<Allocated> finishedCopy = new Vector<>(finished);
要么
Vector<Allocated> finishedCopy = new Vector<>();
finishedCopy.addAll(finished);
但是,这将创建两个不同的向量,其中包含对相同Allocated实例的引用。 如果您想要的是这些对象的副本,则需要创建显式副本。 在不进行复制的情况下,更改第一个列表中对象的状态也将在第二个列表中更改其状态,因为两个列表都包含对相同对象的引用。
注意:
将引用分配给finished_copy
,将使new Vector()
无法访问。 这个,
Vector<allocated>finished_copy=new Vector<allocated>();
finished_copy=finished;
应该是这样的(使用这个Vector
构造函数 )
Vector<allocated>finished_copy=new Vector<>(finished);
注意,这仍然是finished
内容的浅表副本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.