当前位置: 首页 > 面试题库 >

流Java 8 api中是否存在gregationBy方法?

贺宏逸
2023-03-14
问题内容

在布莱恩·格茨(Brian
Goetz)的这个非常有趣但只有一年历史的演示中,他在幻灯片链接中介绍了aggregateBy()应该在Stream
API中提供的一种方法,该方法应该将列表(?)的元素聚合到地图(给定默认初始值)以及操作该值的方法(也适用于重复键)-请参见演示文稿中的下一张幻灯片。

显然,Stream
API中没有这种方法。还有另一种方法可以在Java
8中执行类似操作吗?


问题答案:

聚合操作可以使用Collectors类来完成。因此,在视频中,该示例等效于:

Map<String, Integer> map = 
    documents.stream().collect(Collectors.groupingBy(Document::getAuthor, Collectors.summingInt(Document::getPageCount)));

groupingBy方法将给您一个Map<String, List<Document>>。现在,您必须使用下游收集器来汇总List与每个键关联的每个文档的所有页数。

这是通过提供一个下游收集到完成groupingBy,这是summingInt,产生了Map<String, Integer>

他们在文档中给出了基本上相同的示例,在该文档中,他们按部门计算雇员的工资总和。

我认为他们删除了此操作,Collectors而是创建了一个类,以拥有一个有用的类,其中包含许多您通常会使用的简化方法。



 类似资料:
  • 我是一个非常新的学生。我有一个编码练习,我一直在努力完成,我认为我的解决方案是功能性的,但是我得到了意想不到的结果。我在想是不是我的逻辑有问题? 赋值:编写一个名为SumFirstAndLastDigit的方法,其中有一个类型为int的参数,称为number。 该方法需要使用循环找到传递给该方法的参数编号的第一位和最后一位,并返回该编号的第一位和最后一位的总和。 如果数字为负数,则方法需要返回-1

  • 我的想法是: 是最好的办法吗?

  • 浏览Brian Goetz的这篇非常有趣但只有一年历史的演示文稿-在链接的幻灯片中,他介绍了一个流API中的方法,该方法应该聚合列表的元素(?)到贴图(给定默认初始值和操作该值的方法(也适用于重复的关键点)-请参见演示文稿中的下一张幻灯片)。 显然,流API中没有这样的方法。在Java 8中是否还有其他类似的方法?

  • 问题内容: 我想知道,您可以在现有缓存中调用的方法吗?还是在性能关键代码中最好将其存储在本地int中? 当您在调用之间不添加/删除项目时,我希望它确实已缓存。 我对吗? 更新 我不是在谈论内联或类似的东西。我只想知道方法本身是否在内部缓存值,或者每次调用时它都会动态计算。 问题答案: 我想我不会说它是“缓存的”-但是它只是存储在一个字段中,因此它足够快以经常调用。 Sun JDK的实现只是:

  • has 确定数据是否存在has($table, $where) table [string] 表名. where [array] WHERE 条件.has($table, $join, $where) table [string] 表名. join [array] 多表查询. where [array] WHERE条件.Return: [boolean] 返回 TRUE 或者 FALSE.可用于做