博客
https://blog.csdn.net/mu_wind/article/details/109516995
Stream的使用
sort+map+filter
sort
接收一个函数作为参数,这个函数被应用到两个元素的比较上,返回boolean
- 不加reversed就是从小到大
- .sorted(_Comparator._comparing(_ChargeData::getUnit).reversed())_
- .sorted((_a,b) -> { xxx ; })_
map
- 接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射为一个新的元素
- 独取元素:houses.stream().map(_House::getNumber).collect(Collectors._toList());
- 求和:nums.stream().mapToInt(_Integer::intValue).sum()_;
filter
- 接收一个谓词(返回boolean的函数),返回一个包含所有符合谓词的元素的流
dataList.stream()
.filter(_data ->data != null)
.collect(Collectors._toList());查找+匹配
返回boolean
- anyMatch:流中是否有一个元素能匹配给定的谓词
- allMatch:流中是否所有元素都能匹配给定的谓词
- noneMatch:确保流中所有元素都不匹配给定谓词
- 查找(无参)
- findAny:返回当前流中的任意元素(优化)
- findFirst:返回按顺序的第一个元素
规约
分组收集
- Map<_Integer, List<_Integer_>> collect = nums.stream().collect(Collectors._groupingBy(_Integer::intValue))_;
连接字符串
collect:用来最后收集流(常用Collectors.toList())
- distinct:返回一个元素各异的流
- limit(n):返回一个不超过给定长度的流(截取前几个,如果不够返回空流)
- skip(n):返回一个扔掉了前n个元素的流
- foreach(f):对流中的所有元素进行遍历,并对每个个体作为参数执行f函数
- count():返回流中元素的个数
mapToInt():将流转换为intStream,使用max,min,average等方法前(可以使用boxed反转为流)
小工具相关
Optional
用于优雅的解决空指针问题
BigDecimal
- 四舍五入:b.setScale(2, BigDecimal.ROUND_HALF_UP)
- Integer
- 快捷创建集合:Arrays.asList(_1,2,3)_;
- 随机数(0-100):(_int) (Math._random() * 100);
IntStream
快速创建集合(字符串可替换为数字):Arrays.asList(“asd”,”asd”);
