Java stream groupby_javadoop

Java stream groupby_javadoopgroupingBy()是StreamAPI中最强大的收集器Collector之一,提供与SQL的GROUPBY子句类似的功能。使用形式如下: .collect(groupingBy(…)); 需要指定一个属性才能使用,通过该属性执行分组。我们通过提供功能接口的实现来实现这一点-通常通过传递lambda表达式。例如,如果我…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

groupingBy()是Stream API中最强大的收集器Collector之一,提供与SQL的GROUP BY子句类似的功能。

 

使用形式如下:

 

.collect(groupingBy(...));

 

需要指定一个属性才能使用,通过该属性执行分组。我们通过提供功能接口的实现来实现这一点 – 通常通过传递lambda表达式。

 

例如,如果我们想按长度对字符串进行分组,我们可以通过将String :: length传递给groupingBy()来实现:

Java stream groupby_javadoop

分组到自定义Map实现

如果需要提供自定义Map实现,可以使用提供的groupingBy()重载来实现:

 

 

Java stream groupby_javadoop

 

提供自定义的下一个Collection

如果需要将分组元素存储在自定义集合中,可以使用toCollection()收集器来实现。

 

例如,如果要在TreeSet实例中对元素进行分组,然后输出到一个新的Collection,则可以这样简单:

 

Java stream groupby_javadoop

分组计数

如果您只想知道分组元素的数量,提供自定义counting()j就可以:

 

Java stream groupby_javadoop

将每个组转为字符串

如果需要对元素进行分组并为每个组创建单个String表示,可以使用join()来实现:

 

Java stream groupby_javadoop

分组和过滤条目

从分组结果中排除某些条目。这可以使用filtering()收集器来实现:

 

Java stream groupby_javadoop

分组和计算每组平均值

如果需要派生每组条目的平均属性,那么有一些方便的收集器:

 

averagingInt()

averagingLong()

averagingDouble()

 

Java stream groupby_javadoop

 

分组和计算每组的总和

如果要对分组条目进行累计总和:

 

summingInt()

summingLong()

summingDouble()

 

 

Java stream groupby_javadoop

reducing缩减操作

 

Java stream groupby_javadoop

计算最大最小值

 

Java stream groupby_javadoop

组合Collector

示例#1

假设我们有一个字符串列表,并希望获得与长度大于1的大写字符串相关联的字符串长度的映射,并将它们收集到TreeSet实例中。

 

Java stream groupby_javadoop

例#2

指定字符串列表,按匹配长度对它们进行分组,转换为字符列表,展平获取的列表,仅保留具有非零长度的不同元素,并最终通过应用字符串连接来减少它们。

 

Java stream groupby_javadoop

 

 

转自:https://www.jdon.com/50132

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171376.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 200 : parsererror错误

    200 : parsererror错误原因ajax请求中返回data,与controller中requestMapping方法返回类型不一致导致,或者controller中方法无返回值即void,都可引起该错误。

  • pycharm怎么换行_pycharm有几个版本

    pycharm怎么换行_pycharm有几个版本pycharm设置自动换行1.代码编辑区自动换行对所有文件有效:(1)File->Settings->Editor->General(2)找到SoftWraps,勾选Soft-wrapfiles(3)在输入框中添加;*.py,如下图所示2.控制台console自动换行File->Settings->Editor->G…

  • 常用信息收集方法[通俗易懂]

    常用信息收集方法[通俗易懂]信息收集的种类信息收集分为被动收集和主动收集两种方式。被动信息收集:利用第三方的服务对目标进行访问:Google搜索、Shodan搜索、其他综合工具,被动信息收集是指京可能多低收集与目标相关的信息主动信息收集:通过直接扫描目标主机或者网站,主动方式能获取更多的信息,目标系统可能会记录操作信息。在信息收集中,需要收集的信息:目标主机的DNS信息、目标IP地址、子域名、旁站和C段、CMS类型、敏感目录、端口信息、操作系统版本、网站架构、漏洞信息、服务器与中间件信息、邮箱、人员、地址等。在信息收集中

  • 怎样设置rotacast插件_potplayer好好的设置设置,看个4k还是挺香的[通俗易懂]

    怎样设置rotacast插件_potplayer好好的设置设置,看个4k还是挺香的[通俗易懂]potplayer,一个神器!画质很有提升!4k没问题!如果你也是折腾一族,就来折腾折腾吧!安装potplayer,一路点完,到最后一步的时候,要选择安装额外的编解码器。然后系统会自动安装。(啰嗦一句,所有的东西请安装在非中文目录下并且在同一个文件夹里,最好就安装在解压的那个文件夹里,否则会出现各种奇怪的问题)当你勾选了安装额外的编解码器,点击关闭后,软件会自动弹出编解码器选择组件对话框,如图所…

  • volatile禁止指令重排序_volatile int

    volatile禁止指令重排序_volatile intvolatile禁止指令重排JMM要求有序性计算机在执行程序时,为了提高性能,编译器和处理器常常会做指令重排,一把分为以下3种单线程环境里面确保程序最终执行结果和代码顺序执行的结果一致.(单线程不用关心指令重排)处理器在进行重新排序是必须要考虑指令之间的数据依赖性多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程使用的变量能否保持一致性是无法确定的,结果无法预测源码写的顺序不见得和编译的指令顺序一样例子1比如源码如下publicvoidmySort(){intx

    2022年10月18日
  • idea 2021.3.4激活码(JetBrains全家桶)[通俗易懂]

    (idea 2021.3.4激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号