从Int数组中删除重复(重复)元素

时间:2014-04-12 18:50:38

标签: java arrays

我想从数组中删除重复(重复)元素。我这样做面临困难。我尝试了几种方法。任何人都可以找到我的解决方案。

Input: 3,5,6,7,3,5,3,8
Expected Output: 3 5 6 7 8

我的代码:

package com.nanofaroque.DeleteRepElementInArray;

public class DeleteElementRepetativeElement {

    public static void main(String[] args) {
        // Here is the input Array...
        int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 };
        int end = arr.length;// finding the length of the array
        for (int i = 0; i < end; i++) {
            for (int j = i + 1; j < end; j++) {
                if (arr[j] == arr[i]) {
                    for (int k = j; k < end; k++) {
                        arr[k] = arr[k + 1];
                    }
                    end--;
                } else {
                    j++;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }

}

1 个答案:

答案 0 :(得分:1)

尝试org.apache.commons.lang.ArrayUtils

从结尾处删除

int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 };
int noOfItemsToBeDeleted=4;
for (int i = 0; i < noOfItemsToBeDeleted; i++) {
    if (arr.length > 0) {
        arr = ArrayUtils.remove(arr, arr.length-1);
    }
}
for (int i : arr) {
    System.out.println(i);
}

从头开始删除

int[] arr = { 3, 5, 6, 7, 3, 5, 3, 8 };
int noOfItemsToBeDeleted=4;
for (int i = 0; i < noOfItemsToBeDeleted; i++) {
    if (arr.length > 0) {
        arr = ArrayUtils.remove(arr, 0);
    }
}
for (int i : arr) {
    System.out.println(i);
}

- 编辑 -

根据您的上一条评论,您只想从数组中删除重复值。请尝试Set<Integer>删除重复的值。

int[] arr = { 1, 2, 3, 5, 6, 7, 8, 9, 5, 4, 7, 8, 9, 3, 2, 1, 0, 3, 4, 8 };

Set<Integer> set = new LinkedHashSet<Integer>();
for (int i : arr) {
    set.add(i);
}

// new array if you need it
int[] newArray = new int[set.size()];
int index = 0;
for (int i : set) {
    System.out.print(i+" ");
    newArray[index++] = i;
}

输出:

1 2 3 5 6 7 8 9 4 0