Java集合與數組去重,Java集合數組

來源:互聯網
上載者:User

Java集合與數組去重,Java集合數組
 集合去重

方法一:利用集合的contains方法,建立臨時集合組裝資料去重

public void listTest1(){        System.out.println("方法一");        List<Integer> list = new ArrayList<Integer>();            for (int i=0;i<=2;i++){                for (int j=0;j<=3;j++){                    list.add(j);            }        }        //建立一個臨時集合裝去重後的資料        List<Integer> tempList = new ArrayList<Integer>();        for(Integer i : list){            if(!tempList.contains(i)){//判斷是否有重複資料,如果沒有就將資料裝進臨時集合                tempList.add(i);            }        }        System.out.println("去重前");        for (Integer i:list){            System.out.print(i+" ");        }        System.out.println();        System.out.println("去重後");        for (Integer i:tempList){            System.out.print(i+" ");        }    }

方法二:通過Iterator 的remove方法

 

public void listTest2(){        System.out.println("方法二");        List<Integer> list = new ArrayList<Integer>();        for (int i=0;i<=2;i++){            for (int j=0;j<=3;j++){                list.add(j);            }        }        System.out.println("去重前");        for (Integer i:list){            System.out.print(i+" ");        }        //建立一個臨時集合裝去重後的資料        List<Integer> tempList = new ArrayList<Integer>();        Iterator<Integer> iter = list.iterator();        while(iter.hasNext()){            int t=iter.next();            if(tempList.contains(t)){                iter.remove();            } else{                tempList.add(t);            }        }        System.out.println();        System.out.println("去重後");        for (Integer i:list){            System.out.print(i+" ");        }    }

 

 

 

數組去重

方法一:傳入一個Object數組,然後返回去重後的數組

public Object[] arrayTest1(Object[] arr){    //用來記錄去除重複之後的數組長度和給臨時數組作為下標索引        int t = 0;        Object[] tempArr = new Object[arr.length];        for(int i = 0; i < arr.length; i++){       //聲明一個標記,並每次重設            boolean isTrue = true;            for(int j=i+1;j<arr.length;j++){       //如果有重複元素,改變標記狀態並結束當次內層迴圈                if(arr[i]==arr[j]){                    isTrue = false;                    break;                }            }      //判斷標記是否被改變,如果沒被改變就是沒有重複元素            if(isTrue){                tempArr[t] = arr[i];       //到這裡證明當前元素沒有重複,那麼記錄自增                t++;            }        }    //聲明需要返回的數組,這個才是去重後的數組        Object[]  newArr = new Object[t];     //用arraycopy方法將剛才去重的數組拷貝到新數組並返回        System.arraycopy(tempArr,0,newArr,0,t);        return newArr;    }

方法二:利用hashset去重

 public Object[] arrayTest2(Object [] arr){        //執行個體化一個set集合        Set set = new HashSet();        //遍曆數組並存入集合,如果元素已存在則不會重複存入        for (int i = 0; i < arr.length; i++) {            set.add(arr[i]);        }        //返回Set集合的數組形式        return set.toArray();    }

main方法

public static void main(String args[]){        ArrayAndListRemove remove = new ArrayAndListRemove();        System.out.println("集合去重");        remove.listTest1();        remove.listTest2();        System.out.println("數組去重");        Object[] arr = {0,1,2,3,0,1,2,3,0,1,2,3};        System.out.println("去重前");        for (int i=0;i<arr.length;i++){            System.out.println(arr[i]+" ");        }        System.out.println("去重後");        Object[] arr1 =  remove.arrayTest1(arr);        for (int i=0;i<arr1.length;i++){            System.out.print(arr1[i]+" ");        }        System.out.println();        Object[] arr2 =  remove.arrayTest2(arr);        for (int i=0;i<arr2.length;i++){            System.out.print(arr2[i]+" ");        }    }

 控制台列印結果

 注意:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src:源數組; srcPos:源數組要複製的起始位置; dest:目的數組; destPos:目的數組放置的起始位置; length:複製的長度。src and dest都必須是同類型或者可以進行轉換類型的數組. 有趣的是這個函數可以實現自己到自己複製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.