`

java去除list中的重复值

    博客分类:
  • java
阅读更多

Set 的add方法

add(E e) 如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。

01 public static List removeDuplicateWithOrder(List list) {

 

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

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

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

代码运行结果如下:

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

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

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

代码运行结果如下:

  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。

分享到:
评论

相关推荐

    list去掉重复对象

    一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。

    去除链表重复元素-Java 实现

    在Java中,去除单链表中的重复元素可以通过使用哈希集合(HashSet)来实现,该集合用于存储已经遍历过的元素。在遍历链表的过程中,我们将每个元素与集合中的元素进行比较,如果发现重复,则删除链表中的该元素。 ...

    Java中对List去重 Stream去重的解决方法

    主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下

    去掉list中的重复对象

    NULL 博文链接:https://xuedong.iteye.com/blog/1157186

    list和数组去重,记录重复次数

    java list集合和数组去除重复项,并记录重复次数个数。

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    Java中List集合对象去重及按属性去重的8种方法

    主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下

    两个list比较 取不同的对象

    比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法

    在list集合中输入元素,去除重复的元素并输出

    在list集合中输入元素,去除重复的元素并输出 1.使用for i循环去重 2.使用迭代器去重 3.使用HashSet特性去重

    Java数组去重 集合List去重的常用方法总结

    在日常的业务开发中,可能会遇到需要将 List 集合中的重复数据去除掉的场景。在实际的业务开发中遇到的情况会更复杂。比如,List 集合可能是历史遗留问题,也有可能是调用接口返回的类型限制,只能使用 List 接收;...

    Java中List根据map的某个key去重的代码

    今天小编就为大家分享一篇关于Java中List根据map的某个key去重的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Java面试宝典2010版

    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2、Java有没有goto? 3、说说&和&&的区别。 4、在JAVA中如何跳出当前的多重嵌套循环? 5、switch语句能否作用在byte上,能否作用在long上...

    Java面试宝典2020修订版V1.0.1.doc

    25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别。 19 27、GC是什么? 为什么要有GC? 20 28、什么是内部类?分为哪几种? 20 29、为什么需要内部类? 20 30、内部类可以引用它的包含类的成员吗?...

    java范例开发大全源代码

     实例13 Java中的进制与移位运算符 22  第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 ...

    java范例开发大全

    实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列...

    一个简单的java爬虫产品

     最初的想法是不创建文件,直接将内容保存到变量中,然后创建索引,即先抓取网页的内容,然后将网页的内容和URL保存到自己构建的JavaBean对象中,接着将这个对象放到一个list列表中,等所有网页抓取完毕以后,将这...

    Java范例开发大全 (源程序)

     实例13 Java中的进制与移位运算符 22  第3章 条件控制语句(教学视频:75分钟) 26  3.1 if控制语句 26  实例14 判断输入的年份是否为闰年 26  实例15 抽奖活动 27  3.2 for语句 28  实例16 小九九...

    List集合多个复杂字段判断去重的案例

    今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Java范例开发大全(全书源程序)

    实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17...

    Dbutils项目实例

    StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim "&gt;1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 ...

Global site tag (gtag.js) - Google Analytics