消除 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. Natas33 Writeup(Phar反序列化漏洞)

    Natas33: 又是一个上传文件的页面,源码如下: // graz XeR, the first to solve it! thanks for the feedback! // ~morla cl ...

  2. ASP.NET Core - 在ActionFilter中使用依赖注入

    上次ActionFilter引发的一个EF异常,本质上是对Core版本的ActionFilter的知识掌握不够牢固造成的,所以花了点时间仔细阅读了微软的官方文档.发现除了IActionFilter.I ...

  3. Uncovering thousands of new peptides with sequence-mask-search hybrid de novo peptide sequencing framework (使用序列掩码搜索结合肽段从头测序框架发现了数千个新肽段)-解读人:刘佳维

    期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位: 朱拉隆功大学 费城威斯塔研究所 物种:人 技术:de novo ...

  4. hdu1532 最大流板子题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目给出源点和漏点,还有一些边,要求源与漏之间的最大流,我采用了Edmonds Karp算法,该 ...

  5. 从数据结构分析mysql为何使用B+tree

    理解mysql为何选择升级版的二叉树,就需要对各种常用的二叉树进行对比.B+Tree是一种特殊的二叉树,本质上也算二叉树.自然会满足二叉树的一般特性. 比如,比节点数据大的在右边,节点数据小的在左边. ...

  6. 牛客网剑指offer【Python实现】——part1

    斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,n<=39). 循环实现,时间复杂度n def Fibonacci(self, ...

  7. MySQL数据库参数调优方法

    怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据 ...

  8. (note)从小白到产品经理之路

    学习了云课堂的产品课程,整理出部分笔记,以作备用参考,方便实际运用过程中查看巩固. 1.产品工具:Axure.mindmanager.viso.办公软件wps 2.产品人需要具备的品格 富有同理心,习 ...

  9. SpringBoot 集成多数据源

    一个项目中怎么划分数据库,可以通过具体业务需求. 项目中数据源怎么如何划分,通过注解的方式@Datasource(ref="") 在方法上指定,会连接指定的数据源,这种方式比较繁琐 ...

  10. C# 便捷实现可迭代对象间的赋值

    目录 都是迭代,为啥我一定要用foreach 如果换成是字典呢? 关于 foreach 都是迭代,为啥我一定要用foreach ​ 问题起源于本人的一个练手的扑克牌程序:洗完牌之后要发给场上的三人. ...