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的正确方法吗?先感谢您。
答案 0 :(得分: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
值获取...我只能希望这是一个例子,而不是真正的代码。 / p>
另请注意,如果您的Persons
课程的每个实例都是一个人,那么最好将其称为Person
。