java - 数组列表。奇怪的东西

标签 java

我有代码:

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/

相关文章:

java - 隐藏敏感信息作为回应

java - ArrayAdapter - ViewHolder 空指针错误

java - AmazonEC2Client describeInstances() 在 Java 中返回零预留

java - file.setReadable(true) 之后文件不可读

java - 如何为二维数组赋值?

java - 如何否定 java 正则表达式中的星号?

java - 为什么 JRE 会因为核心转储而崩溃?

java - 400 错误请求 Spring 测试 Web 应用程序

java - 是什么导致我的代码中出现 StackoverFlowError?

java - 我如何在 portlet 中获得 Liferay 的 Hibernate Session 实现?