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

Java8流与列表分组

郎正初
2023-03-14

我有一个订单列表,我想使用Java8Stream和Collectors按用户分组。GroupingBy:

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser())

这将返回包含用户和订单列表的映射:

Map<User, List<Order>>

我不需要整个对象User,只需要它的username字段,它是一个字符串,所以我想获得如下内容:

Map<String, List<Order>>

我试图使用stream.map将用户映射到username字段,但无法正确实现。我怎样才能尽可能简单地做到这一点呢?

共有1个答案

苏高峰
2023-03-14

您可以只将groupingby收集器与username一起使用,而不是整个user对象:

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser().getUsername())
 类似资料:
  • 我的列表包含像等大小相同的集合。我试过这样做,但似乎不起作用。 我想要的最终结果是。 我可以尝试在中添加所有元素,并对其进行排序,然后为创建一个新的

  • 我试图使用

  • 对于上述代码,我得到的输出为: 但我的期望是得到。 你能指导我实现这一点吗?

  • 与之间的差异: > 它们可能有不同的特点: 这里讨论的似乎是另一个毫无意义的流拆分器特性策略(并行计算似乎更好):深入理解Java8和Java9中的拆分器特性 在本例中,从禁用拆分功能的顺序流创建了一个拆分器(返回null)。当以后需要转换回一个流时,该流不会从并行处理中受益。一种耻辱。 最大的问题是:作为解决办法,在调用之前总是将流转换为并行流会有什么主要影响?

  • 下课: 我现在有一个,我想将其转换为(应该是)的总和。使这变得困难的是,我想在内部映射中正好有26个条目,其中第26个被称为“其他”,它总结了所有数字低于其他25个的条目。 我得到了以下代码:

  • 问题内容: 我有一个对象A的列表。此列表中的每个对象A都包含对象B的列表,而对象B包含对象C的列表。对象C包含一个属性名称,我想使用它使用Java 8进行过滤。 如何使用流在Java 8中编写以下代码以避免嵌套循环: 问题答案: 您可以使用两个,然后使用a,然后可以选择第一个,或者如果没有结果返回: