当前位置: 首页 > 知识库问答 >
问题:

Java将列表组的一个字段(BigDecimal)和2个字段[重复]

董和风
2023-03-14
public class Dto {
    private Integer id;
    private String text;
    private BigDecimal price;
}
 Map<String, Map<Integer, List<Dto>>> map =
            list.stream()
                .collect(
                     Collectors.groupingBy(
                     Dto::getText,
                     Collectors.groupingBy(Dto::getId)));
List<SumDto>

public class SumDto {
      private Integer id;
      private String text;
      private BigDecimal sum;
}

共有1个答案

韩善
2023-03-14

你没有求和,这就是为什么你在任何地方都看不到和。您必须告诉collectors.groupingby如何减少下游元素。否则,它将默认创建列表

你可以这样做:

Map<String, Map<Integer, BigDecimal>> map = list.stream()
    .collect(Collectors.groupingBy(
             Dto::getText, 
             Collectors.groupingBy(
                        Dto::getId, 
                        Collectors.reducing(
                                   BigDecimal.ZERO,
                                   Dto::getPrice, 
                                   BigDecimal::add))));

至于返回结构,我将把它作为练习;)

 类似资料:
  • 需要帮助的一个案件流与分组由我希望能够分组由2个不同的字段,并有其他大小数字段的总和,根据不同的分组。以下是我的实体: 让我们假设我有以下列表作为输入: 下面有一个解决方案的开头,但我在添加第二个聚合来总结余额的时候阻止了:

  • 我想使用Laravel雄辩的模型和关系来连接项目中所有表中的数据;然而,我在翻译这些关系时遇到了一个问题。例如,我有两张桌子;第一个是Books表,另一个是Author表。 如何在Books表上建立关系以获取和?

  • 假设我已将以下对象序列化为json字符串: 现在我想反序列化它,但是我想把名称分成两个字段,和。我该怎么做呢? 我希望最终的结果是类似于: 这对Gson有可能吗?

  • 问题内容: 我有一张税单: TaxLine类为 我想基于unique 和合并它们,然后添加预期: 问题答案: 主体与链接问题中的主体相同,只需要一个不同的下游收集器来求和:

  • 我有一个包含下一个数据的ArrayList:(int)、(int)、(int)、(String)。我按字段对此数组进行排序。如果长度与提交的相等,我如何赋予优先级(优先级将具有具有水平位置的长度)。例如,给定输入: 输出应为: 以下是我所拥有的:

  • 问题内容: 在我的模块中,我有以下many2one字段: 在以下位置: 我知道many2one场取 名字 字段的显示名称,但我想有它使用的组合,并在形式 我读过最好覆盖该方法,所以我尝试了以下方法: 并将其放在ÌnsuranceType`类中。既然什么也没发生:我是否必须将其放置在包含该字段的主类中?如果是这样,是否还有其他方法可以执行此操作,因为这也可能会更改其他many2one字段的显示方式?