我有一个settlement
类的列表,它具有以下属性:
public class Settlement {
private String contractNo;
private String smartNo;
private String dealTrackNo;
private String buySellFlag;
private String cashFlowType;
private String location;
private String leaseNo;
private String leaseName;
private double volume;
private double price;
private double settleAmount;
// getters and setters
}
现在,我想按smartno
(字符串)对settleAmount
列表进行分组,并获得settleAmount
的总和,该总和将成为每个smartno
的新settleAmount
。
因为我使用的是Java 8,所以stream
应该是应该走的路。
Groupby应该使用以下代码非常简单:
Map<String, List<Settlement>> map = list.stream()
.collect(Collectors.groupingBy(Settlement::getSmartNo));
System.out.println(map.getValues());
如果我想通过SmartNo分组并在SettlementAmount上求和后获得一个新列表,该怎么办?这里的大多数例子只展示了如何打印出总和。我感兴趣的是如何获得聚合列表?
如果我正确理解了这个问题,那么您需要一个具有自定义合并的Tomap
收集器,如下所示:
list.stream().collect(Collectors.toMap(
Settlement::getSmartNo,
Function.identity(),
(s1, s2) -> s1.addAmount(s2.getSettleAmount())));
在settlement
类中使用帮助器方法:
Settlement addAmount(double addend) {
this.settleAmount += addend;
return this;
}
当我分组和求和时,我怎样才能绕过这个并保留C栏呢?
我有以下数据框: 我想按列['Home'、'Away']分组,并将名称更改为Team。然后我喜欢将原点和awaypoint相加作为点的名称。 我怎么做?我尝试了不同的方法,使用下面的帖子:Link 但我无法得到我想要的格式。 非常感谢你的建议。 谢谢 泽普。
问题内容: 尝试从计算中创建新列。在下面的代码中,我获得了每个日期的正确计算值(请参阅下面的组),但是当我尝试用它创建一个新列()时,我得到了NaN。因此,我正在尝试在数据框中使用Data3所有日期的总和创建一个新列,并将其应用于每个日期行。例如,2015-05-08位于2行中(总计为),在这个新列中,我希望两行中都具有55。 问题答案: 你要使用此方法将返回索引与df对齐的,然后可以将其添加为新
问题内容: 我正在编写需要访问由Jackson配置定义的类的属性列表的代码。 例如,对于以下类: 我会得到,因为那是Jackson序列化时实际上考虑的属性。 我不认为编写完整的代码来查找getter / setter和检查Jackson注释不是要走的路,因为那样会重新实现Jackson。 如果我能够获得用于序列化的Jackson的句柄,是否可以获取a 或对象的属性列表? (尊重杰克逊的注释和配置)
我正在尝试选择一些不在我的中的属性。这可能吗? 如何从中获取CatId和持久属性? 如果我将它们添加到组中,就像,那么我的结果就会混乱。 我可以使用获得其他属性,如,但这些属性不是计算值。 数据示例: 希望将结果按如下方式分组:
我有一个包含对象的数组,它们是反应组件上的道具 我想抓住第一个物体的细节,因为它是 我可以这样做: 如何获取所有剩余的键和值,并将它们存储在组件状态中?