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

要映射的列表组InngBy的流

白浩荡
2023-03-14

我得到的示例代码是

public Map<String, List<Bier>> opzettenOverzichtBierenPerSoort() {
   //TODO
    
    return bieren.stream().collect(Collectors.groupingBy(Bier::getSoort, TreeMap::new, Collectors.toList()));
}

输入是一个啤酒对象列表,它返回一个包含所有啤酒的啤酒类型的地图。

现在我的问题。分组中的第二个和第三个论点是什么?我得到了第一个说明它是由什么分组的...但是第二个和第三个看起来有点随机。

共有1个答案

穆俊杰
2023-03-14

第二个参数是供应商

第三个参数是下游Collector,它指定如何处理属于单个组的Bier元素。

如果运行单参数变量:

return bieren.stream().collect(Collectors.groupingBy(Bier::getSoort));

它仍然会将每个组的元素收集到一个列表中(这是默认行为),但您无法控制将字符串键映射到相应的列表中的映射类型。

在3参数示例中,您要求Map将是TreeMap,这意味着将对键进行排序。

单参数变量的当前实现:

return bieren.stream().collect(Collectors.groupingBy(Bier::getSoort));

相当于:

return bieren.stream().collect(Collectors.groupingBy(Bier::getSoort, HashMap::new, Collectors.toList()));

这意味着映射的键将不会被排序。

 类似资料:
  • 问题内容: 我有一个带有以下签名的类: 我想要一个来自a 的键,该键将是该类的名称。我如何使用java8流按es名称对列表进行分组?所有es在名称上都是唯一的。 可以在单个流中求解,还是应该以某种方式拆分它还是采用经典解决方案? 问题答案:

  • 我想使用Java流按对用户列表进行分组。 例如,我有。

  • 我有一个从RESTendpoint返回的列表。我需要将该列表分为多个类别(类别是列表中每个条目中的一个项目)。各个类别将写入缓存,以便以后更快地查找。 我不知道我能不能。映射()条目,并提供多个filter()或某种类型的case语句,以将类别条目放入正确的bucket中。 用rxJava实现这样的东西听起来合理吗? 更新:非工作版本 然而,这些按顺序触发,这是我的理解,第二个可观察对象没有发送任

  • 我有一个实体,看起来像这样: 输入数据是一个

  • 我有这个代码: 它产生的是 很高兴我应该如何写映射方法来得到一个地图,它会给我:

  • 我有一个列表 >输入,如下所示: 我试图通过对CURRENCY、PUBLISH_REGION、SOURCE和RECON_STATUS列进行分组来创建另一个列表 >。并将所有唯一状态值作为数据透视添加到输出映射中,并使用JOB_ID_COUNT汇总/聚合计数。 我期待以下响应:输出: 尝试按多个映射字段分组时,我遇到编译时错误。单字段groupingBy工作正常。任何帮助都是非常有效的。