消除 list重复值

Java代码 
  1. public void removeDuplicate(List list) {
  2. HashSet h = new HashSet(list);
  3. list.clear();
  4. list.addAll(h);
  5. }

交集:

Java代码 
  1. list.retainAll(Arrays.asList(arr)); // list 中的就是交集了  arr为数组

差集:

Java代码 
  1. list1.removeAll(list2);

并集:

Java代码 
  1. list1.addAll(list2);
  2. removeDuplicate(list1);//前面所提的清除重复值
 
 

Java处理List中的重复值有两种方法,一种是经处理后得到新的无序list,另外一种则保留list原有的顺序。

方法一:使用Hastset的hashcode方法判断是否重复,数据不会重复,但顺序会变

  1. package array;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. public class ListOnlyValue_1 {
  6. public static void main(String[] args) {
  7. List<String> mylist = new ArrayList<String>();
  8. mylist.add("test");
  9. mylist.add("ab");
  10. mylist.add("cd");
  11. mylist.add("ab");
  12. mylist.add("sd");
  13. mylist.add("ab");
  14. mylist.add("cd");
  15. mylist.add("xyz");
  16. System.out.println("处理前的list:" + mylist);
  17. mylist = removeDuplicate(mylist);
  18. System.out.println("处理后的list:" + mylist);
  19. }
  20. public static List<String> removeDuplicate(List<String> list){
  21. HashSet<String> hashSet = new HashSet<String>(list);
  22. list.clear();
  23. list.addAll(hashSet);
  24. return list;
  25. }
  26. }

代码运行结果如下:

  1. 处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz]
  2. 处理后的list:[test, sd, ab, xyz, cd]

方法二:通过Hashset的add方法判断是否已经添加过相同的数据,如果已存在相同的数据则不添加,维持list中元素原有的顺序。

  1. package array;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. public class ListOnlyValue_2 {
  7. public static void main(String[] args) {
  8. List<String> mylist = new ArrayList<String>();
  9. mylist.add("test");
  10. mylist.add("ab");
  11. mylist.add("cd");
  12. mylist.add("ab");
  13. mylist.add("sd");
  14. mylist.add("ab");
  15. mylist.add("cd");
  16. mylist.add("xyz");
  17. System.out.println("处理前的list:" + mylist);
  18. mylist = removeDuplicateWithOrder(mylist);
  19. System.out.println("处理后的list:" + mylist);
  20. }
  21. public static List<String> removeDuplicateWithOrder(List<String> list) {
  22. HashSet<String> hashSet = new HashSet<String>();
  23. List<String> newlist = new ArrayList<String>();
  24. for (Iterator iterator = list.iterator(); iterator.hasNext();) {
  25. String element = (String) iterator.next();
  26. if (hashSet.add(element)) {
  27. newlist.add(element);
  28. }
  29. }
  30. list.clear();
  31. list.addAll(newlist);
  32. return list;
  33. }
  34. }

代码运行结果如下:

  1. 处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz]
  2. 处理后的list:[test, ab, cd, sd, xyz]

该方法运用了HashSet的add属性,若HashSet中已存在某元素,add方法是不会再将此元素add到HashSet中的,正是运用此原理,当HashSet能add一个元素时,newlist也跟着add一个元素,这样就得到一个维持原有顺序的没有重复值的新list。

java消除 list重复值及交集,并集,差集的更多相关文章

  1. (java/javascript) list 交集 并集 差集 去重复并集

    java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import ...

  2. 如何求ArrayList集合的交集 并集 差集 去重复并集

    需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 ...

  3. Python 求两个文本文件以行为单位的交集 并集 差集

    Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...

  4. spark之交集并集差集拉链

    spark之交集并集差集拉链 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster(&qu ...

  5. java 两个list 交集 并集 差集 去重复并集

    前提需要明白List是引用类型,引用类型采用引用传递. 我们经常会遇到一些需求求集合的交集.差集.并集.例如下面两个集合: List<String> list1 = new ArrayLi ...

  6. java list 交集 并集 差集 去重复并集

    package com; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public clas ...

  7. java List交集 并集 差集 去重复并集

    首先定义两个list List list1 =new ArrayList(); list1.add("); list1.add("); list1.add("); Lis ...

  8. LINQ操作数组(交集,并集,差集,最值,平均,去重复)

    数组是大学里经常拿来做算法练习的对象.一些经典算法非常有价值,考试.装逼.面试都十分有用.但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上. 下面 ...

  9. java list 去除 重复值

    一: Hastset根据hashcode判断是否重复,数据不会重复 Java代码 /** List order not maintained **/ public static void remove ...

随机推荐

  1. JS排序算法--冒泡排序和选择排序

    在我们JS语法当中,数据类型中的复杂数据类型,有一项我们常用的数组数据类型,其中存储的数据有时是乱序的,需要排序,我们有多种方法,最简单的肯定是 :变量.sort(fonction(a,b){a> ...

  2. 启动崩盘!IDEA 2020 无法启动的解决办法|赠送 IDEA 2020 新功能

    今天早上看到 IDEA 可以升级新版本,想着体验一下新功能,点击升级,然后全部项目工程无法打开. 报错信息如下: Cannot execute command No project found to ...

  3. 最全ElasticSearch6.5白金版本从构建ELK、集群搭建到和Mybatis结合操作详细讲解

    1.安装ElasticSearch6.5.1 解压相关的ElasticSearch6.5.1的tar包到目录下,如果我们需要使用JDBC来连接的话是需要到白金版以上的,以下为将基础版破解为白金版的方法 ...

  4. C# 在DataGridView中,点击单元格调出 TreeView控件 或 ListBox控件

    1.调出 TreeView控件 或  ListBox控件 private void deductGrid1_CellClick(object sender, DataGridViewCellEvent ...

  5. PyCharm导入selenium的webdirver模块出错

    selenium安装好后准备验证一下,导入的webdriver有红色标识,检查了浏览器驱动的.环境变量仍然没有解决问题. 后来在百度找到了原因:项目没安装selenium Interpreter 打开 ...

  6. 封装WebSocket(建立链接、主动关闭)

    一.前言 近期项目里需做一个在线聊天功能,就想要在对话的时候建立socket链接.又因为聊天只是其中一个部分,在它外面还有一些全局的消息通知需要接收,因此也需要建立socket链接.在该项目里不仅一处 ...

  7. Redis 6.0 新增功能 - ACL

    Redis 6.0 ACL 期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险. Access C ...

  8. POJ - 1276 二进制优化多重背包为01背包

    题意:直接说数据,735是目标值,然后3是后面有三种钱币,四张125的,六张五块的和三张350的. 思路:能够轻易的看出这是一个多重背包问题,735是背包的容量,那些钱币是物品,而且有一定的数量,是多 ...

  9. 潘粤明的《龙岭迷窟》到底怎么样?我用 Python 得出了一些结论!

    对于天下霸唱的鬼吹灯,相信很多小伙伴都知道,它可谓是国内盗墓寻宝系列小说的巅峰之作,最近得知该系列小说的<龙岭迷窟>部分被制作成了网剧,已经于 4 月 1 日开播了,主要演员潘粤明.姜超. ...

  10. Linux和Windows环境下安装Nginx

    Nginx的安装 windows环境下安装Nginx 安装 Nginx 的下载地址如下: http://nginx.org/en/download.html 选择时尽量选择 Stable 稳定版本,点 ...