java8的stream流常用用法
持续更新~~,用法案例,项目开发中方便寻找
每到需要用的时候,翻半天才到案例,都统计在此,方便寻找
一. 排序 stream().sorted()
public void setVarroleList(List<VarroleEntity> varroleList) {
if (varroleList != null && varroleList.size() > 0) {
varroleList = varroleList.stream().sorted(Comparator.comparing(VarroleEntity::getSeq)).collect(Collectors.toList());
}
this.varroleList = varroleList;
}
1. 缺省排序字段: 以类属性一升序排序
list.stream().sorted(Comparator.comparing(类::属性一));
2. 带排序字段: 以类属性一升序排序,推荐Comparator.reverseOrder()
2.1.升序:不加参数即可
2.2.降序:reversed()和Comparator.reverseOrder(),有区别:
reversed():先排序(默认升序),然后降序;
Comparator.reverseOrder():直接降序排序;
2.3.案例:注意两种写法
//先以属性一升序,结果进行属性一降序
list.stream().sorted(Comparator.comparing(类::属性一).reversed());
//以属性一降序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));
3. 多属性排序,降序都以Comparator.reverseOrder()为例
//属性一升序,属性二降序
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));
//属性一降序,属性二升序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));