gpt4 book ai didi

Java Stream 分组和计数出现次数

转载 作者:行者123 更新时间:2023-11-29 04:10:01 27 4
gpt4 key购买 nike

我有一个代表市场交易的对象列表。每笔交易都有开仓和收仓时间以及利润。我想按一个月对它们进行分组,然后计算每个月利润 > 0 和 < 0 的交易数量 = 创建一个具有以下结构的 map {"MM"= {​​"Win"= numberOfWinTrades, "Loss"= numberOfLossTrades} , "MM"...

我想出了下面的代码,但我无法在其中实现条件:

filteredOrders.stream().collect(Collectors.groupingBy(order -> order.getCreationTime().substring(5,7),
Collectors.groupingBy(order -> order.getPlUsd() > 0, Collectors.counting())));

最佳答案

您可以使用基于 order.getPlUsd() > 0 的内联映射/order.getPlUsd() < 0条件:

Map<String, Map<String, Long>> monthPlusdGroups = 
filteredOrders.stream()
.collect(Collectors.groupingBy(order -> order.getCreationTime().substring(5, 7),
Collectors.groupingBy(order -> order.getPlusd() > 0 ? "Win" : "Loss",
Collectors.counting())));

请注意,此实现 ( order.getPlusd() > 0 ? "Win" : "Loss" ) 将 $0 利润归类为“损失”。

关于Java Stream 分组和计数出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55618012/

27 4 0