前几天,有个同事问我说怎么找出两个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");

第一种方法:这是把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);}}

第二种方法:

   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);}}

以上就是我用的两种方法,由于是个菜鸟,所以大神们有更好的方法望指点,在下感激不尽!


补充:
下面是java8新特性去list集合重复的方法,非常简单,比前的方法简单多了,
首先是将两个集合合并在一起,然后就是下面的方法:(list2是合并以后的集合,spa是去重复的新集合)

 List<String> spa = list2.stream().distinct().collect(Collectors.toList());

这种方法最简单,代码少,清晰明了!!!!


补充:
java8的方法中可以找出相同的元素 代码如下:

 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}

执行结果如下:

[a, b]

由于在方法中使用了泛型,所以可以接收任意类型的流,注意在如果是对象,别忘了重写其 hashCode() 和 equals() 方法。

找出两个List集合重复的元素相关推荐

  1. 高效的找出两个List中的不同元素

    转自同名博文,未知真正出处,望作者见谅 如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素 ...

  2. 汇编语言(十五)之找出两个数组中的相同元素

    找出两个数组中的相同元素,并且输出 程序运行: 代码: datas segmentA dw -1,-2, 3, 4, 5, 6, 7, 8, 9, 10,-11, 12, 13, 14, 15ACou ...

  3. js 快速找出两个数组中的不同元素或对象

    js 快速找出两个数组中的不同元素 var arr1 = [0,1,2,3,4,5]; var arr2 = [0,4,6,1,3,9]; function getArrDifference(arr1 ...

  4. JS案例——找出两个数组中的不同元素或对象、数组去重

    一.找出两个数组中的不同元素或对象 1. 数据 var arr1 = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏" ...

  5. 找出两列表的共有元素python_python 找出两个dataframe中不同的元素

    pandas从Excel中读取数据,数据格式为dataframe格式 用for循环对进行两个列的数据比较想找出不同的元素时,发现数据是一样的,但是比较结果却是相同和不同的都存在(总之就是不是我以为的效 ...

  6. python 找出两个dataframe中不同的元素

    pandas从Excel中读取数据,数据格式为dataframe格式 用for循环对进行两个列的数据比较想找出不同的元素时,发现数据是一样的,但是比较结果却是相同和不同的都存在(总之就是不是我以为的效 ...

  7. java找出两个List集合的重复项

    文章目录 1. 使用 LinkedHashSet 2. java8语法 1. 使用 LinkedHashSet public static void main(String[] args){List& ...

  8. Algs4-1.4.12找出两个有序数组的公共元素-方法1

    1.4.12编写一个程序,有序打印给定的两个有序数组(含有N个int值)中的所有公共元素,程序在最坏情况下所需的运行时间应该和N成比. 答: import java.util.Arrays; publ ...

  9. js找出两个数组中不同的元素

    function getNewArr(a,b){const arr = [...a,...b];const newArr = arr.filter(item => {return !(a.inc ...

最新文章

  1. Python-CSS整理
  2. 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现
  3. [AHOI2009]飞行棋 BZOJ1800
  4. CentOS中通过NAT连接网络
  5. linux mount挂载大小,Linux中mount挂载问题小结
  6. [GXOI/GZOI2019]宝牌一大堆(dp)
  7. java8 stream流操作的flatMap(流的扁平化)
  8. 后台管理系统--毕业设计02
  9. 《计算机操作系统》(第四版)知识点总结
  10. 微信小程序弹框(组件)
  11. Vbs脚本编程简明教程之十五
  12. VSCode如何返回上一步
  13. 手写的计算机论文范文,手写2000论文格式模板_科技论文手写格式模板
  14. jQuery下载和使用
  15. 整合ssh时 犯的愚蠢问题
  16. python小玩意——打开摄像头并截图
  17. Linux系统架构概述
  18. sm-crypto配合hutool加解密报pad block corrupted错误
  19. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布
  20. 第13周项目4 立体类族公有的抽象类

热门文章

  1. how2heap glibc 2.27
  2. 直接扩频序列的原理(DSSS或dsss)
  3. 帆软报表列表_帆软入门与报表设计
  4. Java培训四个月能学会吗
  5. 三星NoteII美国V版I605,恢复三网以及3G上网的办法
  6. shopify 插件开发
  7. CListCtrl 灰白相间实现
  8. 牙膏不只可刷牙——32不寻常用途!!
  9. 计算机语言学 pdf,语言学必读书目PDF版.doc
  10. DLT645-2007 规约 电表 报文解析