如何在Java中创建许多集合中所有元素的视图?

时间:2014-07-10 11:48:48

标签: java collections

我有这个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);

2 个答案:

答案 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;
}