之前使用的一直都是stream 的简单分组,
Map<Integer, List<Order>> orderMap = orderService.list(new QueryWrapper<Order>().lambda().in(Order::getPlatformNo, orderNos).select(Order::getPlatformNo, Order::getPlatformId)).stream().collect(Collectors.groupingBy(Order::getPlatformId));
也就是这种 groupingBy单字段,然后分成一个 map(k, 对象集合),这种形式
但今天突然要用到将他分成一个 Map<对象属性, List<对象属性>>这种形式。查了好久的资料
最终发现可以使用 groupingBy的高级用法
Map<Integer, List<String>> orderMap = orderService.list(new QueryWrapper<Order>().lambda().in(Order::getPlatformNo, orderNos).select(Order::getPlatformNo, Order::getPlatformId)).stream()
.collect(Collectors.groupingBy(Order::getPlatformId,Collectors.mapping(Order::getPlatformNo,Collectors.toList())));
使用 groupingBy收集器来完成,涨姿势了