Java8 Stream 之groupingBy 分组

Hive学习之二——group by和grouping sets的区别 group by和grouping sets的区别 阅读详情
/**
	 * 使用java8 stream groupingBy操作,按城市分组list
	 */
	public void groupingByCity() {
		Map<String, List<Employee>> map = employees.stream().collect(Collectors.groupingBy(Employee::getCity));
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list统计count
	 */
	public void groupingByCount() {
		Map<String, Long> map = employees.stream()
				.collect(Collectors.groupingBy(Employee::getCity, Collectors.counting()));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list并计算分组年龄平均值
	 */
	public void groupingByAverage() {
		Map<String, Double> map = employees.stream()
				.collect(Collectors.groupingBy(Employee::getCity, Collectors.averagingInt(Employee::getAge)));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list并计算分组销售总值
	 */
	public void groupingBySum() {
		Map<String, Long> map = employees.stream()
				.collect(Collectors.groupingBy(Employee::getCity, Collectors.summingLong(Employee::getAmount)));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
 
		// 对Map按照分组销售总值逆序排序
		Map<String, Long> sortedMap = new LinkedHashMap<>();
		map.entrySet().stream().sorted(Map.Entry.<String, Long> comparingByValue().reversed())
				.forEachOrdered(e -> sortedMap.put(e.getKey(), e.getValue()));
 
		sortedMap.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list并通过join操作连接分组list中的对象的name 属性使用逗号分隔
	 */
	public void groupingByString() {
		Map<String, String> map = employees.stream().collect(Collectors.groupingBy(Employee::getCity,
				Collectors.mapping(Employee::getName, Collectors.joining(", ", "Names: [", "]"))));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list,将List转化为name的List
	 */
	public void groupingByList() {
		Map<String, List<String>> map = employees.stream().collect(
				Collectors.groupingBy(Employee::getCity, Collectors.mapping(Employee::getName, Collectors.toList())));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
			v.stream().forEach(item -> {
				System.out.println("item = " + item);
			});
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,按城市分组list,将List转化为name的Set
	 */
	public void groupingBySet() {
		Map<String, Set<String>> map = employees.stream().collect(
				Collectors.groupingBy(Employee::getCity, Collectors.mapping(Employee::getName, Collectors.toSet())));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
			v.stream().forEach(item -> {
				System.out.println("item = " + item);
			});
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作,通过Object对象的成员分组List
	 */
	public void groupingByObject() {
		Map<Manage, List<Employee>> map = employees.stream().collect(Collectors.groupingBy(item -> {
			return new Manage(item.getName());
		}));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作, 基于city 和name 实现多次分组
	 */
	public void groupingBys() {
		Map<String, Map<String, List<Employee>>> map = employees.stream()
				.collect(Collectors.groupingBy(Employee::getCity, Collectors.groupingBy(Employee::getName)));
 
		map.forEach((k, v) -> {
			System.out.println(k + " = " + v);
			v.forEach((i, j) -> {
				System.out.println(i + " = " + j);
			});
		});
	}
 
	/**
	 * 使用java8 stream groupingBy操作, 基于Distinct 去重数据
	 */
	public void groupingByDistinct() {
		List<Employee> list = employees.stream().filter(distinctByKey(Employee :: getCity))
				.collect(Collectors.toList());;
 
		list.stream().forEach(item->{
			System.out.println("city = " + item.getCity());
		});
		
		
	}
 
	/**
	 * 自定义重复key 规则
	 * @param keyExtractor
	 * @return
	 */
	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
		Set<Object> seen = ConcurrentHashMap.newKeySet();
		return t -> seen.add(keyExtractor.apply(t));
	}

PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded 阅读详情

相关推荐

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

java stream group_Java8 Stream之group

1 介绍2 Collectors的groupingBy方法使用Java 8 提供的Stream API 可以以声明式的方法来处理集合中的数据。静态工厂方法 Collectors.groupingBy()和Collectors.groupingByConcurrent()提供类似SQL语言中的‘GROUP BY’的功能。两个工厂方法用于根据某些属性对集合中的元素分组并将分组结果存储在Map(Conc...

weixin_36127428的博客 1万+

科研笔记:怎样写好博士论文?

博士论文外审避坑指南与写作要点 博士论文外审的核心关注点呈现5级优先级:科研成果(硬指标)>创新性>逻辑结构与场景合理性>文献综述与规范性>工作量验证。外审专家会重点核查:1)成果清单是否达标;2)创新点是否真实明确;3)章节逻辑是否自洽、应用场景是否细化;4)文献综述是否构建"研究坐标系";5)实验/理论支撑是否充分。需特别注意三大雷区:科学错误(直接挂稿)、伪创新、场景不合理。写作时应强化选题依据的场景细化,通过"发展阶段+跨领域对比"提升文献综述质量。

Grow into a more wonderful you 1065

java stream group_Java8-10-Stream分组与分区详解

上一篇我们介绍了Strem的概念与实际的一些操作,本篇我们继续来学习Stream的另一个重要操作,分组与分区。我们在上一篇介绍Stream的操作时,会经常使用到Collectors这个类,这个类实际上是一个封装了很多常用的汇聚操作的一个工厂类。我们之前用到过//将结果汇聚到ArrayList中Collectors.toList();//将结果汇聚到HashSet中Collectors.toSet(...

weixin_35727440的博客 2986

阿里巴巴达摩院人工智能训练师(高级)

阿里巴巴达摩院人工智能训练师(高级)

huang0612123的博客 1万+

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

Java Stream GroupBy 整理

Java stream

frankenjoy123的专栏 9万+

[系统安全] 四十七.恶意软件分析 (3)动态分析经典沙箱Cape的安装和基础用法详解

系统安全将更好地帮助初学者了解病毒逆向分析和系统安全。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 6738

Java8的stream之groupingBy()分组排序

Java8的stream之groupingBy()分组排序

李长渊的博客 1万+

【2022网易雷火】游戏研发笔试-AC代码及题目分享

3个小时,4道题目,雷火的题目不在于难,更在于对细节的把控和写大模拟的耐心,花了一个半小时,AC了3.85,直接交卷退了。第一题AC,第二题AC,第三题85%,第四题AC。下面分享一下大致的题意和对应的代码,就不多说了,最近很累(代码可能会有贴错的情况,如有望指正,感谢~)。 T1-小Y抽奖 题意 n行m列个奖励格子,每次抽奖消耗一个道具。每个格子奖励的数量有限且各不相司。每个格子被抽到一次,剩余的奖励数量-1。剩余的奖励数量为0时,则不会再抽到该格子。小Y抽了好多次,但一直没有抽到最想要的..

米莱虾 9266

Ubuntu22.04安装ros(一键搞定)

然后发现可以一键安装,话不多说,直接终端输入如下指令。回车之后系统会自动安装ros。

m0_47313541的博客 7413

Java8 Stream 之groupingBy 分组讲解

本文主要讲解:Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /** * 使用java8 stream groupingBy操作,按城市分组list */ public void groupingByCity() { Map<String, List<Employee>> map = employees.stream().collect(Collect

zhouzhiwengang的专栏 11万+

FPGA实现CAN接口(SJA1000)

学无止境,善于积累,每天积累一点点,成功就在眼前,加油! 1 CAN总线简介 CAN(Controller Area Network,控制器局域网 )总线是一个多主机异步串行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被ISO国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于CAN总线具有...

m0_46498597的博客 1万+

Java8 Stream 之groupingBy 分组详解

功能代码/*** 使用java8 stream groupingBy操作, 基于Distinct 去重数据;});} /*** 自定义重复key 规则}/*** Java 8 Stream 之groupingBy 分组讲解**/*** 数据初始化List < String > citys = Arrays . asList("湖南" , "湖北" , "江西" , "广西 ");i < 10;i ++) {

qq_43842093的博客 9574

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java8 Stream groupingBy对List进行分组

提到Group By,首先想到的往往是sql中的group by操作,对搜索结果进行分组。其实Java8 Streams API中的Collector也支持流中的数据进行分组和分区操作,本片文章讲简单介绍一下,如何使用groupingBy 和 partitioningBy来对流中的元素进行分组和分区。 groupingBy 首先看一下Java8之前如果想对一个List做分组操作,我们需要...

卓立的博客 10万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java8 stream 中利用 groupingBy 进行多字段分组求和

Stream 作为 Java 8 的一大亮点,好比一个高级的迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。 Java 8 中的 Streams API 详解 我们可以利用stream对数据进行分组并求和。示例如下: List<String> items = Arrays.asList("apple", "apple", "banana", "apple", "orange",

大鹏小站的博客 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

stream对多个字段分组_Java8 stream 中利用 groupingBy 进行多字段分组求和案例

Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map对集合按照单个属性分组、分组计数、排序List items =Arrays.asList("apple", "apple", "banana","apple", "orange", "banana", "papaya");// 分组Map> result1 = items.stre...

weixin_39843338的博客 1万+

Java8 stream 中利用 groupingBy 进行多字段分组求和案例

https://www.jb51.net/article/194171.htm 这篇文章主要介绍了Java8 stream 中利用 groupingBy 进行多字段分组求和案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map 对集合按照单个属性分组、分组计数、排序 List<String> items = Arrays.asList("appl..

az44yao的专栏 1万+

Java8 stream 中利用 partitioningBy/groupingBy 进行多字段分组求和案例

Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map 对集合按照单个属性分组、分组计数、排序 List items = Arrays.asList(“apple”, “apple”, “banana”, “apple”, “orange”, “banana”, “papaya”); // 分组 Map<String, List<String>> result1 = items.stream().collect(

扬帆天涯 7310

java8 stream 分组_java8 stream groupingBy 数据流分组

概述,使用java8的 streamgroupingBy ,实现对list中的数据按照年龄对person对象的分组1.Personpackage com.qimh.springbootfiledemo;public class Person {private Integer age;private String name;public Integer getAge() {return age;}...

weixin_35983438的博客 265

java分组求和_Java8stream中利用groupingBy进行多字段分组求和

对集合按照单个属性分组、分组计数、排序List items =Arrays.asList("apple", "apple", "banana","apple", "orange", "banana","papaya");// 分组Map> result1 = items.stream().collect(Collectors.groupingBy(Function.identity()));...

weixin_32267059的博客 4741

java 7 列表分组排序,Java8 stream 之groupingBy() 分组后的排序问题

package com.yeejoin.amos.test.search;public class User{private Integer id;private String type;private String name;public User(){}public User(Integer id,String type,String name){this.id = id;this.type ...

weixin_34871076的博客 1044
上一篇: el-autocomplete 下拉选线添加一个固定按钮
下一篇: el-table实现虚拟滚动
tyjlearning
博客等级 码龄11年 24粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值