[Java 8] Stream – Chuyển List<List<String>> thành List<String>

Chào các bạn, trong bài viết này, chúng ta sẽ cùng tìm hiểu về Cách chuyển List<List<String>> thành List<String>


Sử dụng flatMap để chuyển đổi

Java9Example1.java
Java:
package com.mkyong.test;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Java9Example1 {

    public static void main(String[] args) {

        List<String> numbers = Arrays.asList("1", "2", "A", "B", "C1D2E3");
        
        List<List<String>> collect = numbers.stream()
                .map(x -> new Scanner(x).findAll("\\D+")
                        .map(m -> m.group())
                        .collect(Collectors.toList())
                )
                .collect(Collectors.toList());

        collect.forEach(x -> System.out.println(x));

    }

}
Kết quả
Code:
[]
[]
[A]
[B]
[C, D, E]
Giải pháp
Java9Example2.java
Java:
package com.mkyong.test;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Java9Example2 {

    public static void main(String[] args) {

        List<String> numbers = Arrays.asList("1", "2", "A", "B", "C1D2E3");

        List<String> collect = numbers.stream()
                .map(x -> new Scanner(x).findAll("\\D+")
                        .map(m -> m.group())
                        .collect(Collectors.toList())
                )                                         // List<List<String>>
                .flatMap(List::stream)                    // List<String>
                .collect(Collectors.toList());


        collect.forEach(x -> System.out.println(x));

    }

}
Kết quả
Code:
A
B
C
D
E

Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :)

Bài viết tham khảo tại: https://mkyong.com/java/java-8-stream-convert-listliststring-to-liststring
 

Bình luận