Sử dụng phương thức flatMap() của đối tượng Stream trong Java

479

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Khi làm việc với đối tượng Stream trong Java, đôi khi chúng ta sẽ có những đối tượng Stream của những đối tượng List, Set hay là Array. Ví dụ như:

List<String> students1 = new ArrayList<>();
students1.add("Khanh");

List<String> students2 = new ArrayList<>();
students2.add("Thanh");
students2.add("Dung");

List<List<String>> students = Arrays.asList(students1, students2);

Stream<List<String>> stream = students.stream();

Ở đây, chúng ta có đối tượng List chứa những đối tượng List của những đối tượng String và khi convert đối tượng này qua đối tượng Stream, chúng ta có đối tượng Stream chứa đối tượng List của những đối tượng String. 

  Java Stream – Collectors và Statistics

  Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8

Khi đó, nếu chúng ta cần thao tác trên đối tượng Stream này ví dụ như filter chẳng hạn thì chúng ta không thể làm được. Ví dụ như:

Sử dụng phương thức flatMap() của đối tượng Stream trong Java

Xem thêm nhiều việc làm Java hấp dẫn trên TopDev

Để giải quyết vấn đề này, chúng ta có thể sử dụng phương thức flatMap() trong đối tượng Stream trước khi chúng ta cần thao tác điều gì đó trên đối tượng Stream. Sử dụng phương thức flatMap() chúng ta có thể chuyển đổi đối tượng Stream của những đối tượng List, Set or Array thành đối tượng Stream của những đối tượng đơn giản hơn. Ví dụ như:

Bây giờ, chúng ta có thể sử dụng phương thức flapMap() để giải quyết vấn đề trên:

Sử dụng phương thức flatMap() của đối tượng Stream trong Java