我有这个boilderplace代码
for(Person p: school.getStudents())
p.setName(null);
for(Person p: school.getTeachers())
p.setName(null);
for(Person p: school.getStrangers())
p.setName(null);
我可以在视图中“组合”所有这些集合(即避免像通过addAll()
那样复制/分配内存)并迭代视图吗?
e.g。
for(Person p: allOf(school.getStudents(), school.getTeachers(), school.getStrangers())
p.setName(null);
答案 0 :(得分:3)
您可以使用Guava的Iterables.concat()
方法。它会为传递给它的多个迭代创建一个视图,然后您可以迭代生成的Iterable
。
答案 1 :(得分:1)
您可以创建一个方法,为您执行此操作。
类似的东西:
private List<Person> allOf(List<Person>... collections) {
List<Person> result = new ArrayList<Person>();
for (List<Person> element : collections) {
result.addAll(element);
}
return result;
}