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

如何使用collectors.groupingby来代替分组元素的列表,得到同组元素的某些属性的和?[副本]

郭思淼
2023-03-14

所以基本上我的程序是这样的:

Map<Month, List<Purchase>> map2 = purchases
                .stream()
                .collect(Collectors.groupingBy(Purchase::getMonthOfDate));

它创建包含月份和作为值的购买列表的映射(每个购买包含一个价格)。

Map<Month, Double>

有什么方法可以做到这一点吗?

共有1个答案

裘臻
2023-03-14

假设每个购买都有getprice方法为每个特定的购买返回double,请在collectors.groupingby中使用collectors.summingdouble下游收集器:

Map<Month, Double> monthlySumOfPurchases = purchases
                .stream()
                .collect(Collectors.groupingBy(
                        Purchase::getMonthOfDate, 
                        Collectors.summingDouble(Purchase::getPrice)));
 类似资料:
  • 我已经创建了一个的数组: 我的问题是现在如何访问其中一个数组的元素。例如,我可以通过以下方式访问(或在示例打印中)整个数组元素: 但是如何访问所拥有的数组中的第一个元素呢?我尝试了所有方法,比如,但当数组是链接列表的元素时,我不知道如何访问数组中的元素。

  • 我如何使用“insref”和“pref”对下面的元素进行分组,我在xslt版本1中使用了生成密钥id。 期望的结果: 这是我所拥有的。我也在使用密钥生成函数。任何想法这个xslt有什么问题。至于计数,我正在考虑获得唯一的密钥计数。

  • 我有一个问题: 我有一个列表Java,我填充了不同的值。例如,我有: 我也有其他价值观。现在,我想在这个列表中只搜索第一个字段。例如,我想要A的indexOf。我尝试过写这段代码: 但我得到-1作为回报。我想知道在加载数组时如何访问列表中的字段。

  • 问题内容: 如果我有一个数组,我想检查数组中有多少个。在JavaScript中不使用循环循环的最优雅的方法是什么? 问题答案: 很简单:

  • 如何获得数组中多次出现的元素?

  • 除了替换(修改、替换)一些元素之外,还能写出一个对现有字典进行计算的简洁表达式吗?示例: 我想编写一个表达式,其计算结果为一个dict,其中“x”元素的值递增1: 我不想修改(如);我想将视为不可变的。我可以这样做: 然后参考。但是有没有一种更简洁的方法不需要额外的变量呢?(我只需要引用结果字典一次。)性能不是问题。 字典理解可以用来生成新字典,但是我想要一个返回现有字典的轻微变化的表达式。