使用插入到对象的最新值更新列表

时间:2019-03-07 22:36:21

标签: java arrays object arraylist

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 个答案:

答案 0 :(得分:0)

只需像这样编辑您的代码:

List<Cars> allValues = new ArrayList<Cars>();

Cars obj = new Cars();
obj.setKey("merc"); 
obj.setValue("true");

allValues.add(obj);

obj = new Cars(); // you need to create a new object here
obj.setKey("audi"); 
obj.setValue("true");

allValues.add(obj);

您正在做的是将一个对象添加到列表中,然后更新同一对象而不是创建一个新对象。

答案 1 :(得分:0)

我认为最好的方法是修改Cars类的构造函数,并通过构造函数传递对象的值。而且,您可以简单地在.add()方法中创建新对象。

public Cars(String key,String value){
  //make your stuff here
 }
var allValues = new ArrayList<Cars>();//if you have Java 11 or higher use var
allValues.add(new Cars("merc","true"));

应该可以正常工作:)