Lambda表达式
-
Lambda表达式,函数作为一个方法的参数传递到方法中。
Lambda表达式不能修改定义在外部的局部变量,外部局部变量定义需用final修饰。 例如:外部定义一个String类型变量
final String[] rekey = {""}; -
方法引用
使用一对冒号
::例如: 构造器引用Class::new静态方法引用Class::static_method特定类的任意对象的方法引用Class::method特定对象的方法引用instance::method
stream 流
-
stream API 函数式编程风格。
- 数据源 集合、数组、I/O channel,产生器generator等
- 聚合操作 filter\map\reduce\find\match\sorted\reversed
-
生成流
- stream() 串行流
- parallelStream() 并行流
-
聚合操作
-
forEach 迭代流中的每个数据
-
map 映射每个元素对应的结果
-
filter 设置条件过滤元素
-
limit 获取指定数量的流
-
sorted 对流进行排序 (后面加上.reversed()降序)
-
parallelStream 并行流
-
Collectors 实现归约操作 例如:
.collect(Collectors.toList())
将流转换成集合和聚合元素,Collectors用于返回列表或字符串;
.collect(Collectors.joining(","))
合并字符串将“,”去除。 -
统计 主要int double long 类型获取最大值.getMax(),最小数.getMin(),所有数和.getSum(),平均数.getAverage()
-
分组 1、分组求和
例如:计算某年有多少钱(因为money类型为BigDecimal类型,所以需要映射)
Map<String,Optional<BigDecimal>> item = list.stream() .collect(Collectors.groupingBy(List::getYear,Collectors.mapping(List::getMoney, Collectors.reducing(BigDecimal::add))));2、 只是根据某个字段进行分组:
Map<String,List<ListDto>> monthMap = list.stream().collect(Collectors.groupingBy(ListDto::getMonth)); -