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)


相关推荐

  • HD 最长回文

    HD 最长回文

  • uva 1401 dp+Trie

    uva 1401 dp+Trie

  • 单目摄像机标定程序「建议收藏」

    单目摄像机标定程序「建议收藏」我自己写了一个摄像机标定程序,核心算法参照learningopencv,但是那个程序要从命令行预先输入参数,且标定图片要预先准备好,我觉得不太好,我就自己写了一个,跟大家分享下。若有纰漏,希望大家指正!#include”stdafx.h”#include”cv.h”#include”highgui.h”#include#includeusingname

    2022年10月31日
  • 程序,进程,线程的区别和联系

    程序,进程,线程的区别和联系进程和程序区别和联系表现在以下方面:1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映了一个程序在一定的数据集上运行的全部动态过程。2)进程和程序并不是一一对应的,一个程序执行在不同的数据集上…

  • unit 4 Obtaining info about other user

    unit 4 Obtaining info about other user
    unit4Obtaininginfoaboutotheruser
     
    如果你在家使用你的个人电脑,可能你就是登录的唯一用户。然而如果你工作在一个Linux服务器上,就有可能同时存在着其他用户。对于后一种情况,这时候要是有些关于comma

  • BP神经网络原理及matlab实例

    BP神经网络原理及matlab实例转载:http://blog.csdn.net/u013007900/article/details/50118945上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能。由这些人工神经元构建出来的网络,才能够具有学习、联想、记忆和模式识别的能力。BP网络就是一种简单的人工神经网络。 本文具体来介绍一下一种非常常见的神经网络模型——反

发表回复

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

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