【发布时间】:2019-03-07 22:36:20
【问题描述】:
List<Cars> allValues = new ArrayList<Cars>();
Cars obj = new Cars();
obj.setKey("merc");
obj.setValue("true");
allValues.add(policyOrg1);
obj.setKey("audi");
obj.setValue("true");
allValues.add(obj);
我有这种情况,我必须在我的列表中插入两个值,并且我正在使用同一个对象,然后在将先前设置的键和值插入到列表中后重置该值。但是,当对象被重新分配时,我看到之前插入到列表中的值被更新为最新的分配值。除了创建一个新的对象和分配之外的任何解决这个问题的方法。
上述插入的结果是列表最终有两个条目,键为 audi,值为 true,因为它是最后插入的值。
【问题讨论】:
-
您不是将对象的 副本 放入列表中,而是对对象本身的引用。无论如何,您都会将不同的对象放入列表中。
-
“除了创建一个新的对象和分配之外的任何方法来解决这个问题”......不,也没有必要害怕创建新的对象。
-
"除了创建一个新的对象并分配之外的任何方法来解决这个问题。" 不,如果你希望列表有 2 个不同的东西,你需要创建 2 个不同的东西,而不仅仅是修改一件事。
-
为什么不使用 Set 而不是 List 来存储 Cars 对象? (额外的工作 -> 你必须在 Cars 类中实现 hashcode 和 equals 以获得唯一性)
标签: java arrays object arraylist