java代码如何找出两个List集合中的重复元素呢?

戚薇 Java经验 发布时间:2023-04-16 18:06:12 阅读数:1393 1
下文笔者讲述找出两个list集合中重复元素的方法分享,如下所示

两个List集合中重复元素获取的实现思路

方式1:
   遍历两个List,借助第三方List,找出重复元素

方式2:
   借助List中Stream,然后进行对比获取List重复
List<String> list1 = new ArrayList<>();
		List<String> list2 = new ArrayList<>();
		list1.add("a");
		list1.add("b");
		list1.add("c");
		list1.add("d");
		list2.add("d");
		list2.add("f");
		list2.add("g");
		list2.add("h");
		list2.add("k");

//方式1:将list1集合放到list2中
list2.addAll(list1);
	HashMap<String,Integer> mapList=new HashMap<>();
	for(String str:list2){
		int count=0;
		if(mapList.get(str)!=null){
			count=mapList.get(str)+1;
		}
		mapList.put(str,count);
	}
	System.out.println("重复的元素是:");
	for(String key:mapList.keySet()){
		if(mapList.get(key)!=null && mapList.get(key)>0){
			System.out.println(key);
		}
	}

//方式2
Map<String,String> map=new HashMap<>();
	String str=null;
	String stp=null;
	String psp=null;
	for(int i=0;i<list1.size();i++){
		str=list1.get(i);
		map.put(str,str);
	}
	for(String spt:map.keySet()){
		System.out.println("key:"+spt+"-----------value:"+map.get(spt));
	}
	System.out.println("==========="+map.entrySet());
	for(int i=0;i<list2.size();i++){
		stp=list2.get(i);
		if(stp.equals(map.get(str))){
			System.out.println("重复的元素:"+stp);
		}
	}

//stream方法 
public static void main(String[] args) {
	List<String> list = new ArrayList<>();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("d");
	list.add("a");
	list.add("b");
	System.out.println(getDuplicateElements(list.stream()));
}

public static <T> List<T> getDuplicateElements(Stream<T> stream) {
	return stream.collect(Collectors.groupingBy(p -> p,Collectors.counting()))
			.entrySet().stream() // Set<Entry>转换为Stream<Entry>
			.filter(entry -> entry.getValue() > 1) // 过滤出元素出现次数大于 1 的 entry
			.map(entry -> entry.getKey()) // 获得 entry 的键(重复元素)对应的 Stream
			.collect(Collectors.toList()); // 转化为 List
}
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202304/16816396266258.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者