Java 使用方法删除数组中的重复项

Java 使用方法删除数组中的重复项,java,Java,我试图使用一种方法从数组中删除重复的数字,但不幸的是,我无法解决它。这就是我迄今为止所做的: //method code public static int[] removeDuplicates(int[] input){ int []r=new int[input.length]; for (int i = 0; i < input.length; i++) { for (int j = 0; j < input.length; j++) {

我试图使用一种方法从数组中删除重复的数字,但不幸的是,我无法解决它。这就是我迄今为止所做的:

//method code
public static int[] removeDuplicates(int[] input){
    int []r=new int[input.length];

    for (int i = 0; i < input.length; i++) {
        for (int j = 0; j < input.length; j++) {
            if ((input[i]==input[j]) && (i != j)) {
                return r;
            }
        }
    }
    return r;
}
//方法代码
公共静态int[]移除副本(int[]输入){
int[]r=新的int[input.length];
for(int i=0;i
最简单的方法是将所有元素添加到一个集合中

public static int[] removeDuplicates(int[] input){
    Set<Integer> set = new HashSet<Integer>();
    for (int i = 0; i < input.length; i++) {
        set.add(input[i]);
    }
    //by adding all elements in the Set, the duplicates where removed.
    int[] array = new int[set.size()];
    int i = 0;
    for (Integer num : set) {
        array[i++] = num;           
    }
    return array;
}
publicstaticint[]移除的复制(int[]输入){
Set=newhashset();
for(int i=0;i
您可以这样做:

public static int[] removeDuplicates(int[] input){
    boolean[] duplicate = new boolean[input.length];
    int dups = 0;
    for (int i = 0; i < input.length; i++) {
        if(duplicate[i])
            continue;
        for (int j = i + 1; j < input.length; j++) {
            if ((input[i]==input[j])) {
                duplicate[j] = true; // j is duplicate
                ++dups;
            }
        }
    }
    int[] r = new int[input.length] - dups;
    int index = 0;
    for(int i = 0; i < input.length; ++i)
        r[index++] = input[i];
    return r;
}
publicstaticint[]移除的复制(int[]输入){
boolean[]duplicate=新的boolean[input.length];
int-dups=0;
for(int i=0;i

也可以在
O(n log n)
中完成

如果您不希望集合中有重复项,那么首先不应该使用数组。使用一个集合,你将永远不会重复删除放在首位


如果您只是“有时”不希望重复,那么您最好进一步解释您的情况。

您正在寻找一个,并且
包含
方法。您知道如何将元素添加到数组中吗?您想创建自己的方法来删除重复项吗?否则,正如MichaelIT所说,你可以使用set,其中set不允许重复项。在众多其他项中,可能重复项没有,实际上我需要在不使用set的情况下解决它。这将改变元素的顺序,这可能是个问题,也可能不是。谢谢@nakosspy,但我需要在没有设置的情况下解决它。还有什么其他方法呢?这是学校作业吗?@我想这是个错误。它必须是if(!isExists(result,i))而不是if(isExists(result,i))。你能编辑它吗?@nakosspy:看起来像。此外,结果数组可能应该缩短。这不是我的答案,所以我不想编辑它。B'Tasneem最好自己找出解决方案。你应该在那里放一条评论,“如果你不想在你的收藏中重复,那么你首先不应该使用数组”。这就像说“如果需要命令行参数为整数,则不应使用
main(String[]argv)
”。有输入数据之类的东西,它并不总是以程序最方便的形式出现。的确,有时输入数据的格式是无法约束的。但这些情况比你想象的要少见,应该尽可能避免。输出约束也是如此。