开发避坑指南(58):Java Stream 按List元素属性分组实战指南
问题
Java 中如何根据List的某个元素的属性进行分组?
解决办法
直接上代码
List<OrderInfo> orderList = orderService.selectList(entityWrapper);
Map<String, List<OrderInfo>> orderMap = new HashMap<>(0);
if (null != orderList && !orderList.isEmpty()) {orderMap = orderList.stream().collect(Collectors.groupingBy(OrderInfo::getOrderType));
}
语法说明:
Collectors.groupingBy()是Java 8 Stream API中用于数据分组的关键方法,功能类似于SQL的GROUP BY子句,支持单级分组、多级分组及聚合计算。
代码中OrderInfo::getOrderType为分组依据,表示按订单类型进行分组。