java 数组如何去除重复元素

java 数组如何去除重复元素

问题描述:

java 数组如何去除重复元素。。。。。。。。。。。。。。。。。。

也是自己写的,纯数组去重处理:
/*

  • 去除数组中的重复元素
    */
    public class RemoveRepeated {

    public static int[] delete(int[] arr,int index){
    int[] newArr=new int[arr.length-1];
    for(int i=0;i if(i>=index)
    newArr[i]=arr[i+1];

    else
    newArr[i]=arr[i];
    }
    arr=newArr;
    return arr;
    }
    //保留在第一次出现的位置
    public static int[] removeRepeated1(int[] arr){
    for(int i=0;i<arr.length;i++){
    for(int j=i+1;j<arr.length;j++){
    if(arr[i]==arr[j]){
    arr=delete(arr,j);
    j--;
    }
    }
    }
    return arr;
    }

    //保留在最后一次出现的位置
    public static int[] removeRepeated2(int[] arr){
    for(int i=0;i<arr.length;i++){
    for(int j=i+1;j<arr.length;j++){
    if(arr[i]==arr[j]){
    arr=delete(arr,i);
    j--;
    }

        }
    
    }
    return arr;
    

    }
    //全部去除
    public static void removeRepeated3(int[] arr){

    int temp=0;
    for(int i=0;i<arr.length;i++){
        for(int j=0;j<arr.length;j++){
            if(arr[i]==arr[j]&&i!=j)
            {
                temp=arr[i];
            }
    
        }
        if(arr[i]!=temp){
            System.out.print(arr[i]+"\t");
        }
    
    }
    

    }

    public static void loop(int[] arr){

    for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"\t");
    }
    System.out.println();
    

    }
    public static void loopOld(int[] arr){

    for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"\t");
    }
    System.out.println();
    

    }

    public static void main(String[] args) {
    int[] arr={2,2,2,4,10,2,3,4};
    System.out.print("老数组为: ");
    loopOld(arr);

    System.out.print("去重的数组为(保留第一次出现的位置):   ");
    loop(removeRepeated1(arr));
    
    System.out.print("去重的数组为(保留最后一次出现的位置):");
    loop(removeRepeated2(arr));
    
    System.out.print("去重的数组为(全部去除):                            ");
    removeRepeated3(arr);
    

    }

}

放到hashset里面再取出来

1、方法一
[java] view plain copy
//数组去重方法一

String[] array = {"a","b","c","c","d","e","e","e","a"};

List result = new ArrayList<>();

boolean flag;

for(int i=0;i<array.length;i++){

flag = false;

for(int j=0;j<result.size();j++){

if(array[i].equals(result.get(j))){

flag = true;

break;

}

}

if(!flag){

result.add(array[i]);

}

}

String[] arrayResult = (String[]) result.toArray(new String[result.size()]);

System.out.println(Arrays.toString(arrayResult));

先遍历原数组,然后遍历结束集,通过每个数组的元素和结果集中的元素进行比对,若相同则break。若不相同,则存入结果集。
两层循环进行遍历得出最终结果。

2、方法二
[java] view plain copy
//数组去重方法二

String[] array = {"a","b","c","c","d","e","e","e","a"};

List list = new ArrayList<>();

list.add(array[0]);

for(int i=1;i<array.length;i++){

if(list.toString().indexOf(array[i]) == -1){

list.add(array[i]);

}

}

String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

System.out.println(Arrays.toString(arrayResult));

通过使用indexOf方法进行判断结果集中是否存在了数组元素。

3、方法三
[java] view plain copy
//数组去重方法三

String[] array = {"a","b","c","c","d","e","e","e","a"};

List list = new ArrayList<>();

for(int i=0;i<array.length;i++){

for(int j=i+1;j<array.length;j++){

if(array[i] == array[j]){

j = ++i;

}

}

list.add(array[i]);

}

String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

System.out.println(Arrays.toString(arrayResult));

嵌套循环,进行比较获取满足条件结果集。

4、方法四
[java] view plain copy
//数组去重方法四

String[] array = {"a","b","c","c","d","e","e","e","a"};

Arrays.sort(array);

List list = new ArrayList<>();

list.add(array[0]);

for(int i=1;i<array.length;i++){

if(!array[i].equals(list.get(list.size()-1))){

list.add(array[i]);

}

}

System.out.println(Arrays.toString(arrayResult));
先使用java提供的数组排序方法进行排序,然后进行一层for循环,进行相邻数据的比较即可获得最终结果集。
5、方法五
[java] view plain copy
//数组去重方法五

String[] array = {"a","b","c","c","d","e","e","e","a"};

Set set = new HashSet<>();

for(int i=0;i<array.length;i++){

set.add(array[i]);

}

String[] arrayResult = (String[]) set.toArray(new String[set.size()]);

System.out.println(Arrays.toString(arrayResult));

1、ArrayList集合转数组
[java] view plain copy
String[] arrayResult = (String[]) list.toArray(new String[list.size()]);

自己代码实现如下:
int[] arr = new int[]{1,2,3,4,23,3,5,1};
ArrayList arrList = new ArrayList();
for(int i=0; i {
if(!arrList.contains(arr[i]))
arrList.add(arr[i]);
}
Iterator inter = arrList.iterator();
while(inter.hasNext())

如果想简单点,可以把数据全部放入HashSet中,里面不会包含重复元素。有重复的会被替换掉。

 /*
 * 去除数组中的重复元素
 */
public class RemoveRepeated {

    public static int[] delete(int[] arr,int index){
        int[] newArr=new int[arr.length-1];
        for(int i=0;i<newArr.length;i++){
            if(i>=index)
                newArr[i]=arr[i+1];         
            else
                newArr[i]=arr[i];
        }
        arr=newArr;
        return arr;
    }
    //保留在第一次出现的位置
    public static int[] removeRepeated1(int[] arr){
        for(int i=0;i<arr.length;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]==arr[j]){
                    arr=delete(arr,j);
                    j--;
                }
            }
        }
        return arr;
    }

    //保留在最后一次出现的位置
    public static int[] removeRepeated2(int[] arr){
        for(int i=0;i<arr.length;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]==arr[j]){
                    arr=delete(arr,i);
                    j--;
                }

            }

        }
        return arr;
    }
    //全部去除
    public static void removeRepeated3(int[] arr){

        int temp=0;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length;j++){
                if(arr[i]==arr[j]&&i!=j)
                {
                    temp=arr[i];
                }

            }
            if(arr[i]!=temp){
                System.out.print(arr[i]+"\t");
            }

        }

    }

    public static void loop(int[] arr){

        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
        System.out.println();
    }
    public static void loopOld(int[] arr){

        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
        System.out.println();

    }


    public static void main(String[] args) {
        int[] arr={2,2,2,4,10,2,3,4};
        System.out.print("老数组为:                                                         ");
        loopOld(arr);

        System.out.print("去重的数组为(保留第一次出现的位置):   ");
        loop(removeRepeated1(arr));

        System.out.print("去重的数组为(保留最后一次出现的位置):");
        loop(removeRepeated2(arr));

        System.out.print("去重的数组为(全部去除):                            ");
        removeRepeated3(arr);
    }

}

放入set里

        String[] ss = {"1","2","3","4","5","12","3","2","3","5"};
        Set<String> set = new TreeSet();
        Collections.addAll(set, ss);
        ss = (String[])set.toArray(new String[set.size()]);

        for (int i = 0; i < ss.length;i++){
            System.out.println(ss[i]);
        }