将 List<String> 中的分隔字符串转换为 List<String>

Rog*_* Ng 0 java lambda

假设我们有List<String>一些包含分隔符的值,,我们如何将 split 和 merge 转换为List<String>没有分隔符的 a ,

输入[ "1,2", "3,4", "5" ]

输出[ "1", "2", "3", "4", "5" ]


命令式代码

List<String> input = Arrays.asList("1,2", "3,4", "5");
List<String> output = new ArrayList<>();
for (String str : input) {
  for (String split : str.split(",")) {
    output.add(split);
  }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

你可以用Streams来做到:

List<String> output = input.stream()
                           .flatMap(s -> Arrays.stream(s.split(",")))
                           .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

例如,

List<String> input = Arrays.asList("1,2", "3,4", "5" );
List<String> output = input.stream()
                           .flatMap(s -> Arrays.stream(s.split(",")))
                           .collect(Collectors.toList());
System.out.println (output);
Run Code Online (Sandbox Code Playgroud)

会输出

[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)