给定n个字符串,求每个字符串出现的次数并且按出现次数从大到小排序输出(java8方式)

本文介绍使用Java8的groupingBy方法统计字符串数组中各元素出现频率的方法,并通过一行代码实现从统计到排序的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:利用java8的分组(groupingBy) 可以求出每个字符出现的次数返回的是一个Map,对该Map的值进行排序,最后再转回LinkedHashMap(保持顺序),只是为了一行代码实现而已


	String[] names = { "张三", "张三", "李四", "李四", "李四", "李四", "王五", "A", "B", "C", "C" };
		Map<String, Long> finalMap = Stream.of(names)
				.collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).entrySet().stream()
				.sorted((v1, v2) -> v2.getValue().compareTo(v1.getValue()))
				.collect(Collectors.toMap(Entry::getKey, Entry::getValue, (m1, m2) -> m2, LinkedHashMap::new));
		System.out.println(finalMap);
(里面的m1,和m2是当map的key出现重复后要采取的措施,这里是后面覆盖前面,文中的环境下是不可能重复的)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值