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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免备案cdn_cdn贝安装

    免备案cdn_cdn贝安装免备案CDN,符码CDN应该是使用CDN贝搭建,该CDN系统相对来说比较成熟,功能支持比较丰富。今天对符码免备案CDN进行简单的测试,仅供大家参考。首先,就是简单粗暴的多地区PING大法,简单看下CDN延迟效果:如果要是对比那么多免备案CDN延迟来说,符码CDN平均可以做到45ms的延迟,无疑是测试的所有免备案CDN中多地区PING平均延迟最小的一个,甚至一些国内CDN也达不到这个低延迟效果,延迟…

    2022年9月3日
    2
  • matlab行列式的转置_matlab行列式左右翻转

    matlab行列式的转置_matlab行列式左右翻转行列式转置,值不变>>a3=[6231;1215;5231;4121]a3=6231121552314121>&gt

    2022年8月5日
    4
  • 外链图床-PicGo-Gitee

    外链图床-PicGo-Gitee前言刚开始写建立博客的时候,头疼过图片该如何处理:直接放github的仓库里吧。可是随着图片越来越多,每次pull、clone都需要耗费大量的时间。而且github的仓库加载很慢,影响博客的流畅性。外链图床吧。可是国内基本上没有什么好用的免费图床,七牛云之类的都需要收费的。国外的图床加载速度又是特别的慢。自己搭建。图床搭建所使用的工具为PicGo、Gitee、Typora.在这之前,我一般在VSCode上面写Markdown文档,但是现在开始添加图片到博客中去,转而使用Typora,以便

    2022年6月21日
    35
  • 做了6年的Java,java简历包装项目经验[通俗易懂]

    高频问题1.上一家公司,你为什么会离职?公司很好,但是公司调整了业务,接下来的发展路线和自己的目标不一致,所以要换工作工作太清闲,学不到知识,我不怕累,就是想多锻炼自己,想找具有挑战力工作公司的管理制度不也是很完善,没有晋升机会,我比较想进步,找一个更好的平台我想去优秀的公司,让自己变得更好2.为什么来我们这里?对原单位充满感恩,这是我人生中非常重要的经历,我认同原单位领导和文化两份工作的本质是一致的,行业和工作性质都有紧密联系选择一份新的工作不代表背叛过去,发扬原公司魅力,同时为了

    2022年4月11日
    339
  • Vue和vue全家桶有什么区别_Vue和vue全家桶有什么区别

    Vue和vue全家桶有什么区别_Vue和vue全家桶有什么区别vue全家桶都有什么全家桶,顾名思义,对于开发一个完整的中大型单页面应用项目所必须的所必须的插件和框架。注:此文章主要讲解vue-cli脚手架开发方式,不介绍各插件的具体使用方式,具体使用方式详见其他详细介绍文章。一、vue-clivue-cli也叫脚手架,官方定义为Vue.js开发的标准工具!相比scirpt标签引入,脚手架具有如下特点:1)、功能丰富对Babel、TypeScr…

    2022年10月26日
    0
  • 我收集了12款自动生成器,无聊人士自娱自乐专用「建议收藏」

    我收集了12款自动生成器,无聊人士自娱自乐专用「建议收藏」整理|Jane出品|AI科技大本营(ID:rgznai100)【导语】此前,AI科技大本营为大家介绍一个火爆文章生成器系统BullshitGenerator,专以生成各种奇葩…

    2022年5月21日
    603

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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