-1
ArrayList<Persons> persList = new ArrayList<Persons>();

for(Persons p : persList){
    Persons pers = new Persons();
    pers = service.getPersons(id);
    p.setAddress(pers.getAddress());
    persList.add(pers);
}   

这是将所有找到的人员添加到 persList 的正确方法吗?先感谢您。

4

1 回答 1

4

不,您不应该在迭代列表时修改列表,而不是通过Iterator.remove方法。除此之外,即使这段代码没有抛出异常,它也会一直持续下去,除非它persList是空的……总会有新的人来迭代!

您基本上应该创建一个新列表,收集要添加的项目,然后addAll在最后使用:

ArrayList<Persons> persList = new ArrayList<Persons>();
// Populate the list, presumably
List<Persons> extraPeople = new ArrayList<Persons>();

for(Persons p : persList){
    // Note: there's no point in creating a new object only to ignore it...
    Persons pers = service.getPersons(id);
    p.setAddress(pers.getAddress());
    extraPeople.add(pers);
}

persList.addAll(extraPeople);

在我看来,这段代码仍然没有多大意义,因为您id在每次迭代中都通过相同的值获取......我只能希望这是一个示例,而不是真正的代码。

另请注意,如果您的Persons班级的每个实例都是一个人,最好调用它Person

于 2013-06-07T14:57:51.280 回答