java分组列表<CustomerOrder>到地图<Gender,Money>
public class CustomerOrder {
private final Gender gender;
private final Order order;
public Gender getGender() {
return gender;
}
public Order getOrder() {
return order;
}
}
public class Order {
private final long orderAmount;
public long getOrderAmount() {
return orderAmount;
}
}
我想实现java流媒体的等效功能:
SELECT Gender, SUM(orderAmount) FROM orders
GROUP BY Gender;
谢谢
编辑:我过度简化了问题-CustomerOrder包含一个订单,其中包含orderAmount
我设法通过以下方式到达Map<Gender, List<Long>>
:
Map<Gender, List<Long>> map = orders.stream()
.collect(Collectors.groupingBy(CustomerOrder::getGender))
# 1 楼答案
您可以使用^{} ,它有3个参数:
代码如下:
如果需要指定返回映射的类型,即如果需要按性别对映射排序,则可以使用
Collectors.toMap
的4参数重载:# 2 楼答案
编辑
我没有编译这个,但是应该可以工作(使用较小的替换)