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

如何创建对象列表,而不是映射与group pingBy收集?

姜俊友
2023-03-14

我有以下流操作。

Map<String, Integer> pieDataMap = expenses.stream()
    .collect(groupingBy(expense -> typeClassifier.apply(expense, chartCriteria), 
                        summingInt(Expense::getCost)));

而不是获取Map

我如何做到这一点而不迭代生成的映射并在额外的循环中创建对象?


共有2个答案

上官鸿晖
2023-03-14

根据group pingBy函数签名,

static <T,K,A,D> Collector<T,?,Map<K,D>>    groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)

它返回一个收集器,该收集器生成(将元素收集到)映射

隆向晨
2023-03-14

如果问题是是否可以使用原始流而不将其分组到映射,那么这是不可能的。要对结果进行分组,需要对整个输入进行处理,因为无法知道下游是否会有新的元素最终进入其中一个组。

因此,您必须获得一个分组映射,然后将其条目映射到PieEntry对象

pieDataMap.stream().entrySet().stream().map(entry -> new PieEntry(entry.getKey(), entry.getValue()));

您还可以将其链接到之后的原始流链。收集()

 类似资料:
  • 我有一个包含子对象列表的类,如下所示: 我有一个学生类列表,如下所示: 我可以使用传统的foreach循环对数据进行分组,但我想为此使用stream API,但不能这样做。你能帮忙吗?

  • 注意: 我不需要创建java对象,因为我只需要检查一些值,但我没有找到任何东西来取消将它们作为通用对象或树或任何东西。像杰克逊的 JsonNode。如果可能的话,让我知道,这样我就可以避免所有这些混乱的对象来映射一切。 现在的问题是: 我不得不解组一个简单的xml,但是结果总是空的。我已经尝试了不同的注释,但是如果它们没有失败,结果就是null。 这似乎是这个问题的相同情况,但使用相同的注释是行不

  • 我有一个带有 RestAssured 的测试自动化宠物项目,我想让它在架构上开发,以便使代码可重用,测试脚本易于阅读。我有表示API的请求和响应的类,我也有DTO类。例如,下面是一个与终结点一起使用的类: 如您所见,有一个父类< code > EndpointTechnicalSteps ,我想用它来处理来自endpoint的响应。例如,我想在< code > endpoint technical

  • 我正在开发一个使用现有数据库的应用程序,该数据库只能通过存储过程访问。这些SP中的大多数返回来自多个表的列。 我们有一个数据访问层,它从我们的域对象层返回类型的对象。但是,由于SPs返回来自多个表的列,我不确定应该如何构建我的域对象,因为它们中的大多数不会“自然”映射到从SPs返回的数据。 示例:存储过程返回来自“员工”表和“经理”表的列: -员工ID -FirstName -LastName -

  • 问题内容: 如何在Python中创建对象(类实例)列表? 还是这是不良设计的结果?我需要这个原因是因为我有不同的对象,并且需要在以后的阶段中处理它们,所以我将继续将它们添加到列表中,然后再调用它们。 问题答案: 存储对象实例列表非常简单

  • 我使用Java 8 streams尝试了以下代码: 我得到的是一个< code >列表 我正确地得到了一个