本文简单记述Stream的使用
第一种、最常用的,从数据库查出数据后,需要封装成vo类,把需要的字段返回给前端
List<Order> orderList=orderService.list();
List<OrderVo> list = orderList.stream().map(order -> {
OrderVo orderVo = new OrderVo();
BeanUtils.copyProperties(order, orderVo);
return orderVo;
}).collect(Collectors.toList());
第二种、只想获取List对象中的某个属性,比如想获取Order的全部id,然后批量查询用户信息
List<Order> list=orderService.list();
List<String> ids=list.stream().map(Order::getId).collect(Collectors.toList());
第三种、去重,根据对象中的某个属性,进行去重处理,比如根据Order的id去重
List<Order> list=orderService.list();
List<Order> orderList= list.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Order:: getId))), ArrayList::new));
第四种、筛选,查出数据后,进行筛选,过滤出符合条件的数据,比如筛选符合条件的订单数
List<Order> list=orderService.list();
int orderCount= (int) list.stream().filter(s -> s.getId().equals(id)&&s.getType().equals(type)).count();
第五种,利用stream进行foreach或者对数组进行逗号分割,anyMatch操作判断用户是否有某个权限等