我有一个代表市场交易的对象列表。每一次交易都有一个开盘和收盘的时间,都有一个利润。我想按月份对它们进行分组,然后统计每个月中利润>0和<0的交易数量=创建一个具有以下结构的映射{“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利润归类为“loss”。
我试图收集流,丢弃很少使用的项目,如本例所示: 我有一种感觉,可以做得简单得多 - 我是对的吗?
问题内容: 我有一个看起来像这样的模型: 我想要为每个类别选择项目的计数(只是计数),因此在SQL中,它会像这样简单: 有没有相当于做这种“ Django方式”?还是纯SQL是唯一的选择?我熟悉Django中的count()方法,但是我看不出group by如何适合那里。 问题答案: 正如我刚刚发现的,这里是如何使用Django 1.1聚合API进行此操作:
问题内容: 我第一次尝试使用Java 8流… 我有一个对象Bid,它表示用户对拍卖项目的出价。我有一个投标清单,我想制作一张地图,计算出用户投标的拍卖次数(不同)。 这是我的看法: 它有效,但是我感觉自己在作弊,因为我流式传输了地图的条目集,而不是在初始流上进行了操作……这一定是更正确的方法,但是我无法确定出来… 谢谢 问题答案: 您可以执行两次: 这样,您就可以确定每个用户在每次拍卖中有多少个出
问题内容: 我有一个看起来像这样的数据框: 如何求和并计算,以得到一个看起来像这样的新数据框? 我知道如何求和 或 计数: 但不是两者都要做! 问题答案: 尝试这个: 或者如果您不想重置索引: 要么 演示:
我有一张清单,傻瓜 我想按类别分组,然后合计金额和价格。 现在我只需要用一个保存汇总的金额和价格的Foo对象替换String键。这就是我被困住的地方。我好像找不到办法。
问题内容: 我尝试在Java 8流API中找到一种简单的方法来进行分组,我提出了这种复杂的方法! 感谢你的投入。 问题答案: 我认为你只是在寻找过载,它需要另一个负载来指定对每个组执行的操作…然后进行计数: 结果: (也有可能使用来提高效率。如果在你的上下文中安全的话,请记住你的真实代码。)