不,您不应该在迭代列表时修改列表,而不是通过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
。