我有一个List<Entity> entites;,其中Entity的Set类型的字段称为testField:

class Entity {
    Set<String> testField;
}

我想获取包含在实体列表内所有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());

希望得到任何帮助,谢谢!

最佳答案

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

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

08-25 14:28