去除List集合中的重复值(四种好用的方法)


项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢?
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。

 1  //set集合去重,不打乱顺序
 2     public static void main(String[] args){
 3          List<String> list  =   new  ArrayList<String>(); 
 4          list.add("aaa");
 5          list.add("bbb");
 6          list.add("aaa");
 7          list.add("aba");
 8          list.add("aaa");
 9 
10          Set set = new  HashSet(); 
11          List newList = new  ArrayList(); 
12          for (String cd:list) {
13             if(set.add(cd)){
14                 newList.add(cd);
15             }
16         }
17          System.out.println( "去重后的集合: " + newList); 
18       }
 1  //遍历后判断赋给另一个list集合
 2      public static void main(String[] args){
 3          List<String> list  =   new  ArrayList<String>(); 
 4          list.add("aaa");
 5          list.add("bbb");
 6          list.add("aaa");
 7          list.add("aba");
 8          list.add("aaa");
 9 
10          List<String> newList = new  ArrayList<String>(); 
11          for (String cd:list) {
12             if(!newList.contains(cd)){
13                 newList.add(cd);
14             }
15         }
16          System.out.println( "去重后的集合: " + newList); 
17       }
 1 //set去重
 2     public static void main(String[] args){
 3          List<String> list  =   new  ArrayList<String>(); 
 4          list.add("aaa");
 5          list.add("bbb");
 6          list.add("aaa");
 7          list.add("aba");
 8          list.add("aaa");
 9 
10         Set set = new  HashSet(); 
11          List newList = new  ArrayList(); 
12          set.addAll(list);
13          newList.addAll(set);
14 
15          System.out.println( "去重后的集合: " + newList); 
16      }
 1  //set去重(缩减为一行)
 2         public static void main(String[] args){
 3              List<String> list  =   new  ArrayList<String>(); 
 4              list.add("aaa");
 5              list.add("bbb");
 6              list.add("aaa");
 7              list.add("aba");
 8              list.add("aaa");
 9 
10              List newList = new ArrayList(new HashSet(list)); 
11 
12              System.out.println( "去重后的集合: " + newList); 
13          }

hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)

//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list));

原文:https://blog.csdn.net/cs6704/article/details/50158373


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。