我有一个带有多个字段的对象。字段之一是List<Object2>

我想恢复所有Object2项目的所有名称(Object2.getName())的列表(或集合,因为我不需要重复的)。

我尝试这样做,如下所示:

getList().stream()
        .map(Object::getListObject2)
        .collect(Collectors.toSet())
        .stream()
        .flatMap(List::stream)
        .collect(Collectors.toSet());


它返回一个Set<Object2>,但不返回Set/List<Object2.getName()>

另外,我担心流的复杂性。

谢谢。

最佳答案

您无需收集然后重新流式传输。只需调用getName。
这个怎么样 ?

getList().stream()
    .map(Object::getListObject2)
    .flatMap(List::stream)
    .map(Object2::getName)
    .collect(Collectors.toSet());

10-06 14:19