我有代码:
private class Record {
byte year;
float val;
}
Record record=new Record();
List<Record> recList = new ArrayList<Record>();
...
//now I add first element to array list
record.year=12;
record.val=55;
recList.add(record);
//now I add second element to array list
record.year=13;
record.val=77;
recList.add(record);
正如你所见,我添加了不同的元素。 但结果是数组列表中的所有元素都是相同的。 因此添加 2-nd、3-d... 元素会更改所有先前的元素 到最后一个“记录”的值。 怎么了?谢谢?
最佳答案
ArrayList
保存对象的引用列表。您总是修改相同的原始对象,这意味着引用是相同的,但其值不同。
您可以通过将新实例显式分配给 record
变量来修复此问题:
record.year=12;
record.val=55;
recList.add(record);
record = new Record();
record.year=13;
record.val=77;
recList.add(record);
关于java - 数组列表。奇怪的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039230/