如果你存放的是对象的话,请保证那个对像中的值是固定不变的,D:声明对象及初始化(error)
while(){
A: 1)声明对象及初始化(right)
B: 2)对象值=XXX;
C: 3)vector(XX)=对象值
}
如果你在D处声明对象,对象值会保存最新的值,vector只会存入最新一次修改的值
你应改在向vector插值时,建立新的对象这样Vector里的值是此对象的值且在该对象消失时Vector内的值不会随这一对象消失。因为vector中存放的是引用,而不是值。 希望对你有帮助!
while(){
A: 1)声明对象及初始化(right)
B: 2)对象值=XXX;
C: 3)vector(XX)=对象值
}
如果你在D处声明对象,对象值会保存最新的值,vector只会存入最新一次修改的值
你应改在向vector插值时,建立新的对象这样Vector里的值是此对象的值且在该对象消失时Vector内的值不会随这一对象消失。因为vector中存放的是引用,而不是值。 希望对你有帮助!
tmp.add(XX)tmp.get(i)(i=0,1,2...) 这样取不到吗?
Vector v = new Vetor();
MyObject o = new MyObject();
for(int i = 0; i < 10; i++) {
o.setProperty();//
v.add(o);
}
这样的做法是错误的,因为v.get(0) == v.get(9) == o;//注意是"==",不是equals,因为它们都指向了同一个对象应该代码是
Vector v = new Vetor();
for(int i = 0; i < 10; i++) {
MyObject o = new MyObject();
o.setProperty();
v.add(o);
}
就好象你的对象重新赋了新值!
要解决这样的问题
就要把对象加入vector中后
将对象设为null,
再重新new这个对象
赋值,加入vector
此时,存入的新值就是在内存中的不同对象了
你把对象的引用指向同一个地方了。