如何从对象中包含的对象列表中的每个元素的字段中检索一组字符串?

时间:2017-09-29 12:41:26

标签: java list java-8 set java-stream

我有一个包含多个字段的对象。其中一个字段是List<Object2>

我想恢复Object2项的所有名称(Object2.getName())的List(或Set,因为我不需要重复)。

我试着这样做:

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

 getList().stream()
          .flatmap(x -> x.getListObject2().map(Object2::getName))
          .collect(Collectors.toSet());