JAVA8 - flatMap
将一个单词列表如:["hello","world"] 拆分位一个字符列表返回如:["h","e",.......]
前置:
public static void test1(){
String[] words = {"hello", "world"};
Stream<String> stream = Arrays.stream(words);
}
实现:
package com.datastructure.binarytree.btree;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test3 {
public static void main(String[] args) {
List<String> words = Arrays.asList("Hello", "world");
//错误实现方式:
List<Stream<String>> collect1 = words.stream().
map(word -> word.split("")).
map(Arrays::stream).collect(Collectors.toList());
System.out.println(collect1); //out: [java.util.stream.ReferencePipeline$Head@4dd8dc3, java.util.stream.ReferencePipeline$Head@6d03e736]
//right
List<String> collect2 = words.stream().map(word -> word.split(""))
.flatMap(Arrays::stream) //返回:Stream<String[]>
.collect(Collectors.toList());
System.out.println(collect2); //out: [H, e, l, l, o, w, o, r, l, d]
}
}