Computer >> Máy Tính >  >> Lập trình >> Java

Tầm quan trọng của phương thức Collectors.flatMapping () trong Java 9?


Trong Java 9, một phương thức mới đã được thêm vào lớp Collectors: flatMapping () . Nó tương tự như Collectors.mapping () trong đó flatMapping () cho phép chúng ta xử lý các tập hợp lồng nhau. Collectors.flatMapping () phương thức nhận một hàm được áp dụng cho các phần tử đầu vào và một bộ thu thập để tích lũy các phần tử được chuyển qua hàm. Không giống như Collectors.mapping () , Collectors.flatMapping () phương pháp xử lý luồng phần tử cho phép chúng tôi loại bỏ các tập hợp trung gian không cần thiết.

Cú pháp

public static <T,U,A,R> Collector<T,?,R> flatMapping(Function<? super T,? extends Stream<? extends U>> mapper, Collector<? super U,A,R> downstream)

Ví dụ

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<Integer, List<Integer>> 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);
   }
}

Đầu ra

{4=[8, 10], 6=[2, 4, 6]}