说明
flatMap方法是Java8中操作stream的一种方法,它可以将多个Stream连接成一个Stream。
举栗说明:
给你一个列表:
List<String> list = Arrays.asList("a,b,c", "b,c,e", "a,d,f", "a,e", "b,d");
需求:得到不重复的字母集合
————————————————————
如果不清楚flatMap的用法,那么很多人可能会先来两层for循环…
较为优雅的处理
package cn.itoak;
import java.util.*;
import java.util.stream.Collectors;
/**
* Project:CodeFragment
* FullPath:cn.itoak.FlatMapUsage
* Date:2019/9/20
* Time:16:15
* Description:flatMap方法用法
*
* @author itoak
* @version 1.0
*/
public class FlatMapUsage {
public static Set<String> handle(List<String> list) {
return Optional.ofNullable(list)//判空
.orElse(new ArrayList<>())//空处理
.stream()//转流操作
.map(str -> str.split(","))//将列表单个元素分离,得到数组
.flatMap(Arrays::stream)//将上一步得到的数组转流,并拼接成一个stream
.collect(Collectors.toSet());//将流转Set集合,去重
}
public static void main(String[] args) {
List<String> list = Arrays.asList("a,b,c", "b,c,e", "a,d,f", "a,e", "b,d");
Set<String> strings = handle(list);
}
}
这样,你就能得到一个包含不通字母的集合了,是不是比两层for循环看起来要舒服一点呢。