去除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刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM