在Java 9中,向Collectors類添加了一個新方法:flatMapping()。它類似于Collectors.mapping()方法,其中flatMapping()方法允許我們處理嵌套的集合。 Collectors.flatMapping()方法需要的功能將被施加到輸入元件和集電極積累通過功能傳遞的元件。與Collectors.mapping()方法不同,Collectors.flatMapping()方法處理的元素流使我們能夠擺脫不必要的中介集合。
語法public?static??Collector?flatMapping(Function?super?T,??extends?Stream?extends?U>>?mapper,?Collector?super?U,A,R>?downstream)
示例import?java.util.stream.Collectors;
import?java.util.Stream;
import?java.util.Collection;
import?java.util.List;
import?java.util.Map;
public?class?FlatMappingMethodTest?{
public?static?void?main(String?args[])?{??????Map>?map?=?Stream.of(List.of(1,?2,?3,?4,?5,?6),?List.of(7,?8,?9,?10))
.collect(Collectors.groupingBy(
Collection::size,
Collectors.flatMapping(
l?->?l.stream()
.filter(i?->?i?%?2?==?0),?????????????????????????????????????????????????????????????????????Collectors.toList())
)
);
System.out.println(map);
}
}
輸出結果{4=[8,?10],?6=[2,?4,?6]}