删除有限制的重复项

时间:2014-02-08 22:16:58

标签: java arrays

我已经为实验室提出了这个问题,即从用户那里获取一组int,然后删除任何重复项,最后以相同的顺序返回数组。我们被限制使用Hashsets和其他相关的想法。没有理由订购列表,因为它必须符合原始订单。任何人都可以给我一些正确方向的提示或指示,我一直在使用其他一些问题已经回答了一些帮助。以下是我到目前为止的情况:

public class Q3C {
    public static void main() {
        System.out.println("Enter your numbers please: ");
        Scanner numbers = new Scanner(System.in);
        String nums = numbers.nextLine();

        String[] parts = nums.split(" ");//
        int[] n1 = new int[parts.length];//
        for (int n = 0; n < parts.length; n++) {
            n1[n] = Integer.parseInt(parts[n]);
        }

    }

我正在考虑创建另一个方法,名为removeDuplicates并将数组发送给它,然后通过它,检查每个索引的其他重复项,并将所有重复项设置为下一个索引值。我只是无法解决这个问题。任何帮助深表感谢。

1 个答案:

答案 0 :(得分:0)

这里只使用数组(没有集合)的结果:

int[] input = {1, 3, 4, 1, 2, 2, 4, 5, 6, 6};

int[] result = new int[input.length];
int resultSize = 0;

for (int anInput : input) {
    boolean found = false;
    for (int j = 0; j < resultSize; j++) {
        if (anInput == result[j]) { // already exists
            found = true;
            break;
        }
    }
    if (!found) { // add
        result[resultSize++] = anInput;
    }
}

// copy to new result only real values
int[] newResult = new int[resultSize];
System.arraycopy(result, 0, newResult, 0 , resultSize);

System.out.println("result = " + Arrays.toString(newResult));

结果是:

result = [1, 3, 4, 2, 5, 6]