som*_*y99 4 java java-8 java-stream
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想实现相当于java的java流:
SELECT Gender, SUM(orderAmount) FROM orders
GROUP BY Gender;
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:我简化了问题 - CustomerOrder包含一个Order,其中包含orderAmount
我设法通过以下方式获得Map<Gender, List<Long>>:
Map<Gender, List<Long>> map = orders.stream()
.collect(Collectors.groupingBy(CustomerOrder::getGender))
Run Code Online (Sandbox Code Playgroud)
list.stream().collect(Collectors.groupingBy(CustomerOrder::getGender,
Collectors.summingLong(CustomerOrder::getOrderAmmount));
Run Code Online (Sandbox Code Playgroud)
编辑
list.stream().collect(Collectors.groupingBy(CustomerOrder::getGender,
Collectors.summingLong(co -> co.getOrder().getAmmount()));
Run Code Online (Sandbox Code Playgroud)
我没有编译它,但应该工作(有少量替换).
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |