栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 集合去重、获取、统计重复元素

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 集合去重、获取、统计重复元素

集合操作重复元素
    • 1、集合去重
    • 2、集合获取重复元素
    • 3、统计重复次数

开发过程中常遇见的三种问题:集合去重、获取重复元素、统计重复次数。
网上搜了下,实现过程五花八门,这里简单汇总下我觉得比较常用的方式:

1、集合去重

方法:List转set;一行代码即可;

前提是不需要获取重复元素和统计重复次数,最简单的就是把List转为Set,众所周知,set的底层是hashMap,元素不可重复;所以在转换的过程中即可实现自动去重;

List list=ListUtil.toList("A","B","C","A");
Set set =list.stream().collect(Collectors.toSet());
System.err.println(set);  //[A, B, C]
2、集合获取重复元素

方法:通过下标判断;一行代码即可;

前提是不需要统计重复次数,其实就是循环判断一个元素的首个下标和最后一个下标是否相同,如果元素有重复,那么得到的下标也一定是两个;

List list=ListUtil.toList("A","B","C","A");
List result = list.stream().filter(str->list.indexOf(str)!=list.lastIndexOf(str)).distinct().collect(Collectors.toList());
System.err.println(result);  //[A]
3、统计重复次数

方法:转换为Map;一行代码即可;
首先将list转换为map,map的key为集合元素,value为元素出现的次数;
当然如果需要获取重复元素,之后对map的value筛选,得到出现次数大于1的元素即可;

//第一种:使用stream流

List list=ListUtil.toList("A","B","C","A");
//得到集合各元素出现的次数
//解释下这一句,toMap后面有三个参数,key -> key表示以list中的元素本身作为map的key,
//	value -> 1表示map的value初始值为1,(value1,value2) ->value1 + value2)表示map的key值冲突时对map的value值进行累加;
Map countMap = list.stream().collect(Collectors.toMap(key -> key, value -> 1, (value1,value2) ->value1 + value2));
	System.err.println(countMap); //{A=2, B=1, C=1}
//筛选重复元素
List map = countMap.keySet().stream().filter(a->countMap.get(a)>1).collect(Collectors.toList());
	System.err.println(map);  //[A]
//第二种:使用Hutool工具类,import cn.hutool.core.collection.CollectionUtil;
//这是我常用的工具类,需要添加hutool的依赖,如果为了省事可以使用上面一种方法;

List list=ListUtil.toList("A","B","C","A");
//得到集合各元素出现的次数
Map countMap = CollectionUtil.countMap(list);
	System.err.println(countMap); //{A=2, B=1, C=1}
//筛选重复元素
List map = countMap.keySet().stream().filter(a->countMap.get(a)>1).collect(Collectors.toList());
	System.err.println(map);  //[A]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号