Java 8 - 使用Set <! - ? - > type收集List属性作为一组值

时间:2015-07-09 18:56:15

标签: java java-8

我有一个List<Entity> entites;,其中Entity有一个名为testField的字段,其中包含Set type:

class Entity {
    Set<String> testField;
}

我想获取entites列表中所有testField集合中包含的所有String;所以,如果我不使用java 8,我的代码应该看起来很简单:

Set<String> allTestFieldString = newHashSet();
for(Entity entity : entities) {
    allTestFieldString.addAll(entity.testField);
}

以下代码不能为我编译:

entites.stream().map(entity -> entity.testField()).collect(Collectors.toSet());

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:6)

您需要flatMap来生成所有testField集的所有元素的流:

Set<String> allTestFieldString = entites.stream().flatMap(entity -> entity.testField.stream()).collect(Collectors.toSet())