今天看到一段java8的代码,因为初学java8所以有点不好理解:
然后把流的每个过程单独用变量赋值,就好理解多了:
List<List<String>> lists = Arrays.asList(Arrays.asList("Jordan"),
Arrays.asList("Kobe","James"),Arrays.asList("Durant","Curry")
);
//集合 -> 流:流里的元素也是集合的元素,所以流的元素是List<String>
Stream<List<String>> streamRaw = lists.stream();
//流元素的转换,List<String>,通过Collection的stream方法,变为Stream<String>
//即:List<String> -> Stream<String>,把List<String>进行了一次流化
Stream<Stream<String>> streamMap = streamRaw.map(Collection::stream);
//和上面方法引用效果一样
Stream<Stream<String>> streamMap2 = streamRaw.map(l -> l.stream());
//map方法是单纯的转换,而flatMap方法可以进行流的扁平化,和上面的map做对比
Stream<String> streamFlatmap = streamRaw.flatMap(l -> l.stream());