List<Integer> list = Arrays.asList(1, 22, 33, 21, 23, 121, 34);
//list转为流并消费
list.stream()
//处理
.map(item -> item*10)
//过滤
.filter(item -> item > 30)
//排序
.sorted((a,b)-> b-a )
//去重
.distinct()
//收集,得到返回值,做的操作才能生效
// .collect(Collectors.toList())
//规约 得到返回值,相加总数
// .reduce((p1,p2) -> p1+p2 )
//消费
// .forEach(System.out::println)
// .forEach(i-> System.out.println(i+"=="))
;
list.stream().forEach(i-> System.out.println(i+"=="));
//有出勤次数,按次数降序,按名称排序,按次数分组
TreeMap<Integer, List<ReportTopVo>> collect = topVoList.stream()
// .filter(o -> o.getAttendanceAllCount() > 0)
.sorted(Comparator.comparing(ReportTopVo::getAttendanceAllCount,Comparator.reverseOrder())
.thenComparing(ReportTopVo::getUserName))
//按分组升序
// .collect(Collectors.groupingBy(ReportTopVo::getAttendanceAllCount,TreeMap::new,Collectors.toList()))
//按分组降序
.collect(Collectors.groupingBy(ReportTopVo::getAttendanceAllCount,(() -> new TreeMap().descendingMap()),Collectors.toList()));
/**
* 获取角色权限树
* @param roleId
* @return
*/
public List<Permission> getRolePermissionTree(Integer roleId) {
//获取角色所有权限
List<Permission> permissionList = roleDao.selectPermissionByRole(roleId);
List<Permission> permissions = permissionList.stream()
//得到一级
.filter(p -> p.getPid() == 0)
//得到下一级
.map(p -> {
p.setChildren(getChildren(p.getId(), permissionList));
return p;
})
//排序
.sorted((p1, p2) -> p1.getSort() - p2.getSort())
.collect(Collectors.toList());
return permissions;
}
/**
* 获取下级权限
*/
public List<Permission> getChildren(Integer pid, List<Permission> permissionList) {
List<Permission> children = permissionList.stream()
//得到二级
.filter(p -> p.getPid() == pid)
//得到三级
.map(p -> {
p.setChildren(getChildren(p.getId(), permissionList));
return p;
})
//排序
.sorted((p1, p2) -> p1.getSort() - p2.getSort())
.collect(Collectors.toList());
return children;
}
本文深入探讨了Java Stream API的使用,包括如何进行过滤操作以筛选满足特定条件的元素,如何对Stream进行排序以得到有序结果,以及如何通过分组排序来组织数据。通过实例代码,详细阐述了这些高级特性,帮助开发者更高效地处理集合数据。
3389

被折叠的 条评论
为什么被折叠?



