Java中如何去除List中的重復的值?


 如下:

package com.test;

import java.util.*;

public class Test {

    /**
     AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("AAAA");
        list.add("AAAA");
        list.add("AAAA");
        list.add("BBBB");
        list.add("BBBB");
        list.add("BBBB");
        list.add("CCCC");
        list.add("CCCC");
        list.add("CCCC");
        list.add("DDDD");

        new Test().removeDuplicateWithOrder(list);
//      System.out.println(list);
    }

    // 刪除ArrayList中重復元素
    public static void removeDuplicate(List list) {
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = list.size() - 1; j > i; j--) {
                if (list.get(j).equals(list.get(i))) {
                    list.remove(j);
                }
            }
        }
        System.out.println(list);
    }

    // 方法二:通過HashSet剔除
    // 刪除ArrayList中重復元素,add進去順序就變了不考慮順序的話可以使用
    public static void removeDuplicate1(List list) {
        HashSet h = new HashSet(list);
        list.clear();
        list.addAll(h);
        System.out.println(list);
    }

    // 方法三: 刪除ArrayList中重復元素,保持順序
    // 刪除ArrayList中重復元素,保持順序
    public static void removeDuplicateWithOrder(List list) {
        Set set = new HashSet();
        List newList = new ArrayList();
        for (Iterator iter = list.iterator(); iter.hasNext();) {
            Object element = iter.next();
            if (set.add(element))
                newList.add(element);
        }
        list.clear();
        list.addAll(newList);
        System.out.println(" remove duplicate " + list);
    }
}

還有兩種較簡單的,思想都是一樣的,而且順序也會保持的:

public class Test {
    public static void main(String[] args) {
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("aaa");
        arr.add("bbb");
        arr.add("bbb");
        arr.add("aaa");
        arr.add("ccc");
        arr.add("ccc");

        List<String> newList = getNewList(arr);
        System.out.println(newList);
        
//        getlist(arr);
    }
    
    public static  List <String> getNewList(List<String> li){
        List<String> list = new ArrayList<String>();//創建新的list
        for(int i=0; i<li.size(); i++){
            String str = li.get(i);  //獲取傳入集合對象的每一個元素
            if(!list.contains(str)){   //查看新集合中是否有指定的元素,如果沒有則加入
                list.add(str);
            }
        }
        return list;  //返回集合
    }
    
    public static void getlist(List<String> arr) {
        ArrayList<String> result = new ArrayList<String>();
        for (Object s : arr) {
            if (Collections.frequency(result, s)<1)
                result.add((String) s);
        }
        System.out.println(result);
    }
}

 

針對方法getList的小說明:

frequency(Collection<?>, Object) 方法用於獲取所指定元素集合collection等於指定對象object中的數量。

if (Collections.frequency(result, s)<1)
                result.add((String) s);

的意思是如果對象s在集合result中出現的次數小於1(無s元素),就將它添加進入集合result;

 end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



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