列表对象压倒一切的java [关闭](List overriding objects java [c

2019-11-01 16:04发布

嗨,我在我的Java代码的问题...

该problme是我的列表中那样的加法(E):

List<Sms> listSms = new ArrayList<Sms>();
   for(int i = 0; i < grupo.size(); i++){
        Grupo group = new GrupoDao().carregaById(grupo.get(i),usuario.logado);
        for(int j = 0; j < group.getContatos().size(); j++){
            sms.setNumber(group.getContatos().get(j).getNumber());
            listSms.add(sms);//Here he override all the list sms.number to last one added
        }
    }

有谁能够帮助我 ?

Answer 1:

你添加到列表中是不是一个实例,而一个实例的引用。 因此,在年底,在所有引用list指的是同一个实例。 这将意味着,你对实例使用任何参考的变化,会反映所有前面的列表中添加的引用。

该解决方案是创建一个新的Sms每次在列表中添加对它的引用时实例。 那你就必须这样做,在for循环。

for(int j = 0; j < group.getContatos().size(); j++){
    Sms sms = new Sms();
    sms.setNumber(group.getContatos().get(j).getNumber());
    listSms.add(sms);//Here he override all the list sms.number to last one added
}


Answer 2:

您一次又一次地将同一个对象/实例。 你需要一个新的实例添加到列表如下:

Sms x=new Sms();
x.setNumber......
listSms.add(x);


文章来源: List overriding objects java [closed]