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

是否可能在java流中的groupingBy中使用foreach?

宰父保臣
2023-03-14
Map<String, Double> result = books.stream()
                            .collect(Collectors
                            .groupingBy(Book::getAuthor, TreeMap::new, Collectors
                            .averagingDouble(Book::getRating)

共有1个答案

越新霁
2023-03-14

我将映射到一个simpleentry,其中包含每个作者及其著作,以便于分组。

有了它,就可以同时维护作者和book对象,这样就可以在传递下游收集器时从book对象提取任何信息。

示例:

Map<String, Double> resultSet = 
           books.stream()
                .flatMap(book -> book.getAuthors()
                                     .stream()
                       .map(author -> new AbstractMap.SimpleEntry<>(author, book)))
                .collect(Collectors.groupingBy(AbstractMap.SimpleEntry::getKey,
                        TreeMap::new,
                        Collectors.averagingDouble(e -> e.getValue().getRating())));
 类似资料:
  • 为了让我的用户执行更复杂的搜索,我正在使用Algolia。 我想将此jsonObject转换为与兼容的东西,以便能够使用 谢谢你!

  • 问题内容: 是否可以在Gradle中声明一个可在Java中使用的变量?基本上,我想在build.gradle中声明一些var,然后在构建时(显然)获取它。就像C / C ++中的预处理器宏一样… 一个声明的例子就是这样: 有没有办法做这样的事情? 问题答案: 生成Java常量 你可以使用 产生Android资源 你可以使用或以通常的方式访问它们

  • 问题内容: 在Java中,我们看到了很多可以使用该关键字但很少使用的地方。 例如: 在上述情况下,可以,但是通常不这样做。 当一个方法永远不会被覆盖时,我们可以使用关键字。类似地,对于不会被继承的类。 在任何或所有这些情况下使用final关键字是否真的可以提高性能?如果是这样,那又如何?请解释。如果对性能的正确使用确实很重要,那么Java程序员应该养成什么习惯来充分利用关键字? 问题答案: 通常不

  • 问题内容: 我正在考虑将Java用于大型项目,但是我找不到能够在Java中远程表示结构的任何东西。我需要能够将网络数据包转换为可在应用程序中使用的结构/类。 我知道这是可以使用,但这种方式是 不 接受的。因此,我很好奇是否可以像在C语言中那样将一组字节“广播”到一个结构中。如果这不可能,那么我将无法使用Java。 因此,我要问的问题是,是否有可能无需指定对齐方式和数据类型就将任何类型的对齐数据都转

  • 问题内容: 我正在阅读有关Java中已检查和未检查的异常的文章,并找到此文章/链接:https : //projectlombok.org/disableCheckedExceptions.html 根据这篇文章,这只是为javac开发的黑客。 考虑下面的代码片段: 在这里我不得不写, 因为我试图打开一个文件。在这里,“ throws”子句是必须的。没有它,我会得到一个错误。如果我确定要打开的文件