我有一个包含多个字段的对象。其中一个字段是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()>
。
另外,我担心流的复杂性。
谢谢。
答案 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());