如果不想再sql里分组,在查询sql返回的结果集里分组,那么
单字段分组:
Map<Object, List<实体>> collect = list.stream().collect(Collectors.groupingBy(实体::分组的字段, LinkedHashMap::new, Collectors.toList()));
多字段分组:
Map<Object, List<实体>> collect = 查询出来的结果集.stream().collect(Collectors.groupingBy(e -> fetchGroupKey((实体) e)));
private static String fetchGroupKey(实体 vo) { return vo.getActivityId() + "#" + vo.getOrderlaxinId(); }
解决了 sql 不能分组的问题
有的客户不让在sql 判空 , 这个 stream() 也能解决
如:
List<实体> list = 实体.stream().filter(p -> p.getProvince() != null && p.getCity() != null && p.getCountry() != null && p.getLastRecordTime() != null && !"".equals(p.getProvince()) && !"".equals(p.getCity()) && !"".equals(p.getCountry()) && !"".equals(p.getLastRecordTime()) ).collect(Collectors.toList());
还有更多的方法: