Java的List去重
Java的List去重
1.contains()去重
ArrayList 的 contains() 方法的时间复杂度是O(n)O(n)O(n)的。
使用contains 进行判断去重的 时间复杂度是O(n2)O(n^2)O(n2)
保证去重后相对顺序不变。
public class ListDistinctExample {public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>() {{add(1);add(3);add(5);add(2);add(1);add(3);add(7);add(2);}};System.out.println("原集合:" + list);method(list);}/*** 自定义去重* @param list*/public static void method(List<Integer> list) {// 新集合List<Integer> newList = new ArrayList<>(list.size());list.forEach(i -> {if (!newList.contains(i)) { // 如果新集合中不存在则插入newList.add(i);}});System.out.println("去重集合:" + newList);}
}
2.迭代器去重
自定义 List 去重,除了上面的新建集合之外,我们也可以使用迭代器循环判断每一项数据,如果当前循环的数据,在集合中存在两份或两份以上,就将当前的元素删除掉,这样循环完之后,也可以得到一个没有重复数据的集合,实现代码如下:
public class ListDistinctExample {public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>() {{add(1);add(3);add(5);add(2);add(1);add(3);add(7);add(2);}};System.out.println("原集合:" + list);method_1(list);}/*** 使用迭代器去重* @param list*/public static void method_1(List<Integer> list) {Iterator<Integer> iterator = list.iterator();while (iterator.hasNext()) {// 获取循环的值Integer item = iterator.next();// 如果存在两个相同的值if (list.indexOf(item) != list.lastIndexOf(item)) {// 移除最后那个相同的值iterator.remove();}}System.out.println("去重集合:" + list);}
}
使用迭代器去重,不需要开辟新的空间,不保证相对顺序不变。
方法3:HashSet去重(无序)
HashSet 会自动排序。
public static void method_2(List<Integer> list) {HashSet<Integer> set = new HashSet<>(list);System.out.println("去重集合:" + set);}
方法4:LinkedHashSet去重(有序)
既然 HashSet 会自动排序不能满足需求,那就使用 LinkedHashSet,它既能去重又能保证集合的顺序,实现代码如下:
*/public static void method_3(List<Integer> list) {LinkedHashSet<Integer> set = new LinkedHashSet<>(list);System.out.println("去重集合:" + set);}
方法5:TreeSet去重(无序)
TreeSet也会自动去重
除了以上的 Set 集合之外,我们还可以使用 TreeSet 集合来实现去重功能,实现代码如下:
public static void method_4(List<Integer> list) {TreeSet<Integer> set = new TreeSet<>(list);System.out.println("去重集合:" + set);}
方法6:Stream去重(有序)
Stream 实现去重功能和其他方法不同的是,它不用新创建集合,使用自身接收一个去重的结果就可以了,并且实现代码也很简洁,并且去重后的集合顺序也和原集合的顺序保持一致,是我们最优先考虑的去重方法。
public static void method_5(List<Integer> list) {list = list.stream().distinct().collect(Collectors.toList());System.out.println("去重集合:" + list);}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPScvHNZ-1640780666386)(C:\Users\HeHao\AppData\Roaming\Typora\typora-user-images\image-20211229195711770.png)]
Java的List去重相关推荐
- Java ArrayList 实现去重
对一份文件中的姓名去重后以列表形式输出: 文件内容: 代码实现: package Array_list_study; import java.util.*; import java.io.*; // ...
- java set 对象去重_JAVA对象去重
JAVA对象去重比较恶心的说 需求:我要做的是去重每个权限的菜单,菜单表结构是 ID RoleID MenuID 获取的菜单表 应该是MenuID不能重复的 所以写菜单表的实体类,重写equals ...
- java list 合并去重_java 怎么把多个list 合并成一个去掉重复的
展开全部 示例代码636f707962616964757a686964616f31333361313838: public static void main(String[] args){ List ...
- java list 字段去重_java list 根据对象一个字段去重
1.主要思路就是根据从写equals 以及 hashCode 方法. 代码如下: package com.bfd.unibase.modules.dataview.entity; import org ...
- 用Java简便地去重+排序(洛谷P1059题题解,Java语言描述)
前言 Java终于不恶心我了,天哪,TreeSet万岁(坏了,暴露主题了,我的天哪~~) 题目要求 P1059题目链接 分析 当然,我们可以编写排序算法和去重算法,balabala,但我们用的是Jav ...
- java双重循环去重_java List去除重复数据实现
作者:多纤果冻 blog.csdn.net/qq_37939251/article/details/90713643 注:参照的文章完成的是int类型去重. String 类型基本一致,我完成的dem ...
- java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解
小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. ...
- Java Set集合去重机制
关于java里面的集合,大家经常利用到Set集合没有重复数据的特性,来进行数据的去重,那么去重的原理是怎么样的呢? 最近面试了几个人,其间有聊到集合的东西,所以就顺便问了一下这个问题,但是都是只知道这 ...
- Java List Stream 去重
业务场景 在开发中我们常常需要过滤List中的重复对象,而重复的定义往往是根据单个条件或者多个条件,如果是单个条件的话还是比较好处理的,即使不使用工具,代码也可以很容易实现,但如果判断依据不是单个条件 ...
最新文章
- 障碍期权定价 python_[宜配屋]听图阁
- linux 编译C语言代码后产生OBJ文件的方法
- [转]在WPF中自定义控件 UserControl
- vue2.0中的$router 和 $route的区别
- 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
- P4716-[模板]最小树形图
- 如何push一个docker镜像到DockerHub上
- 【开源社区】如何参与JEECG开源团队?
- 微型计算机二进制,微型计算机原理二进制十进制十六进制.docx
- 趣味java_java-趣味算法
- JS事件 鼠标移开事件(onmouseout)鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。...
- 「镁客·请讲」ETC社区发起人邹来辉(Roy):我为什么要做ETC社区和狗狗币基金会?...
- 如何获得微信小游戏跳一跳源码以及源代码组合包括哪些
- 计算机网络自顶向下方法 第四章 作业习题答案
- php计算时间差js,JS计算日期时间差
- 怎么批量调整图片大小
- matlab拓扑优化算法,拓扑优化算法及其实现.ppt
- 计算机科学与专业大学排名,计算机科学与技术专业大学排名
- 一步一步教你开发微信扫码联合登录
- iOS 打开AppStore指定app下载页