还在为Java中的list去重烦恼吗?看看下面这几种方法。

1.循环list中的所有元素然后删除重复数据

//1.循环list中的所有元素然后删除重复数据public static List removeRepeat(List list){for(int i=0;i<list.size()-1;i++){for (int j=list.size()-1;j>i;j--){if(list.get(j).equals(list.get(i))){list.remove(j);}}}return list;}

批注:两层循环,外层循环从第一个元素向最后一个元素循环,内层循环是从最后一个元素向外层循环元素的当前元素循环。比较两个元素是否相等,如果相等,移除靠后的元素来进行去重。这种方法时间复杂度大于0(n),小于0(N²)。

2.通过HashSet去除重复数据

//2.通过HashSet去除重复数据public static List removeRepeat2(List list){HashSet hashSet=new HashSet(list);list.clear();list.addAll(hashSet);return list;}

批注:这种方式利用了Set的特性:元素不可重复,其底层原理是先计算每个对象中的hash值,再比较元素值是否相同,如果相同就保留最新的。

3.删除ArrayList中重复元素,保持顺序

//3.删除ArrayList中重复元素,保持顺序public List removeRepeat3(List list){Set set=new HashSet();List newList=new ArrayList();for(Iterator iter=list.iterator();iter.hasNext();){Object element=iter.next();if(set.add(element)){newList.add(element);}}list.clear();;list.addAll(newList);return list;}

4.把list里的对象遍历一遍,用list.contain(),如果不存在就放入另外一个list集合中

//4.把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中public List removeRepeat4(List list){List listTemp=new ArrayList();for(int i=0;i<list.size();i++){if(!listTemp.contains(list.get(i))){listTemp.add(list.get(i));}}return list;}

5.用jdk1.8的stream对list进行去重:list.stream().distinct();

//5.用jdk1.8的Stream对list进行去重:list.stream().distinct();public List removeRepeat5(List list){List newlist= (List) list.stream().distinct().collect(Collectors.toList());return newlist;}

批注:首先获得list的stream,然后调用distinct()方法。Java8中提供流的方式对数据进行处理非常快,底层用的是forkJoin框架,提供了并行处理,使得多个处理器同时处理流中的数据,所以耗时非常短。

Java中list集合去重方法相关推荐

  1. Java中List集合去重的几种方式

    准备数据: // 准备数据 List<String> list = new ArrayList(); list.add("a"); list.add("b&q ...

  2. Java中List集合的addAll方法的小坑

    Java中List集合的addAll方法的小坑 遇到的问题 已有一个封装类的ArrayList的集合,命名为firstList,现在需要把firstList中的值复制给另一个List,另一个List命 ...

  3. java去重复的集合_如何去除Java中List集合中的重复数据

    1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...

  4. Java中的集合多线程的理解

    Java中的集合 1.List.Set和Queue [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwpgIu9t-1587300088779)(file:///C:\ ...

  5. Java中Set集合是如何实现添加元素保证不重复的?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「武培轩」 Java中Set集合是如何实 ...

  6. Set精讲(Java)·算法常用集合处理方法

    Set精讲(Java)·算法常用集合处理方法 Set概述 Set集合类似于一个罐子,程序可以依次把多个对象"丢进"Set集合,而Set集合通常不能记住元素的添加顺序.实际上Set就 ...

  7. 万字长文深入理解java中的集合-附PDF下载

    文章目录 1. 前言 2. List 2.1 fail-safe fail-fast知多少 2.1.1 Fail-fast Iterator 2.1.2 Fail-fast 的原理 2.1.3 Fai ...

  8. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

  9. java中各种集合的用法和比较

    一,java中各种集合的关系图 Collection       接口的接口     对象的集合  ├ List           子接口         按进入先后有序保存   可重复  │├ L ...

  10. java中的集合_Java 集合介绍,常用集合类

    JAVA 集合 在处理数据的过程中经常会需要一个容器来存储某一类型的数据,Java 中的数组就是这样一种容器.但 Java 中的数组有其局限性,定义后的数组长度不可变,超出数组长度后就不能再存放数据了 ...

最新文章

  1. Unity3D提示“XX,some are mac os x (unix) and some are windows”
  2. 模态框获取id一直不变,都是同一个id值
  3. python中list是什么意思_python中list和list [:]有什么区别?
  4. 《密码与安全新技术专题》第11周作业
  5. 统计问题:找链环数字对的出现频率
  6. 要求做一个从网页上导入excel
  7. div css网页设计源代码_HTML+CSS网页设计,企业网站服务项目布局样式
  8. 如何杀掉可恶的Notkelvir病毒
  9. 设计艺术学院院长 读《未来产品的设计》这本书
  10. 计算机基本知识(8000)---boot系统引导文件
  11. 硬盘测速工具:Blackmagic Disk Speed Test for Mac
  12. 微信营销为什么需要云控
  13. pink-jQuery
  14. 中元节,会吃的民族带你了解“鬼节”的习俗
  15. 手机内存卡RAW无法格式化的解决办法
  16. TFP与TFTP的联系与区别
  17. 转帖(http://hi.baidu.com/johnehuang/blog/item/e1e96782a4b04e97f703a6dc.html)
  18. 物联网智慧物流平台开发
  19. 小米手机 怪诞行为经济学
  20. 英伟达 NVIDIA-Tesla-P40 GPU 直透

热门文章

  1. 效率源希捷硬盘修复(4.2版)及程序下载
  2. 使用虚幻4开发HoloLens的准备工作
  3. GD32F103学习笔记(3)——新建工程
  4. c语言电话订餐管理系统
  5. Linux 如何对http服务器进行压力测试
  6. jsonp原理详解——终于搞清楚jsonp是啥了
  7. 重启tomcat-Tomcat服务器怎么重启?
  8. 卸载TeXLive2016
  9. TIA博途中如何将CPU导出为GSD文件与其他PLC进行PROFINET通信?
  10. 计算机二级excel中mid的用法,Excel中怎么使用Mid函数