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都必须是同类型或者可以进行转换类型的数组. 有趣的是这个函数可以实现自己到自己复制

躲在某一地点,想念一个站在来路,

Java集合与数组去重

相关文章:

你感兴趣的文章:

标签云: