stream流分两种:串行流[stream]和并行流[parallelStream],并行流消耗更多的系统资源,但效率较高,使用并行流的前提是对数据顺序没有要求
1、stream流的基本用法
List<Object> list = new ArrayList<>();
list.stream()// 开启串行流,也可以使用.parallelStream()开启并行流
.filter(i -> i > 3)
.distance()// 中间操作,可以叠加,顺序执行,方法内可以使用lambda表达式
...
.collect(Collectors.toList());// 末尾操作并关闭流,常见的有collect和count等
基本中间操作方法(执行完此类操作后stream流还可以继续执行其他操作)
.filter()// 过滤,可以在方法内嵌套lambda表达式
.map()// 映射,可以将一个对象类型映射到另一个对象类型上,例如Integer转String,可以在方法内嵌套lambda表达式
.limit(Integer i)// 截取前面i个元素
.skip(Integer i)// 跳过前面i个元素,截取后面的流
.concat(stream a,stream b)// 合并两个stream流,属于静态方法,需要单独的一个流去操作合并其它两个流
.sorted()// 排序
.distinct()// 去重
.mapToInt()// 将流转为int流,操作内需嵌套lambda表达式
//还有其它方法待发掘...
基本末尾操作方法(返回的不是流,而是实质对象)
.forEach()// 遍历,可以在方法内嵌套lambda表达式
.count()// 返回流中元素的个数
.collect(Collect collect)// 将流中元素收集到集合中,可以是toList()、toSet()、toMap()
//还有其它方法等待发掘...