比较Java中相同数组的元素,然后删除该元素

时间:2019-07-06 17:54:53

标签: java arrays

我有一个像a [] = {1,2,3,4,3,5}的数组,然后我想将第一个元素与第二,第三,第四元素进行比较,依此类推... 2元素具有3,4,3,5..then 3具有4,3,5 ...
我要在这里达到的目的是删除重复的元素。

public static void main(String[] args) {

    int a[]= {1,2,1,4,5};

    for (int i = 0; i < a.length; i++) {
        for (int k = i + 1; k < a.length; k++) {
             if (a[i] == a[k]) {
                 // shifting elements
                 for( k = i; k < a.length-1; k++) {
                     a[k] = a[k+1];
                 }
             }
        }
    }

    for(int l=0;l<a.length;l++)
        System.out.println(a[l]);

}

预期:最后应该删除重复的元素,并且我的数组将具有[1,2,3,4,5]

2 个答案:

答案 0 :(得分:0)

听起来很像您想对这个数组“去重复”。

有多种方法可以解决此问题,但是我更喜欢的方法是Java 8+中的Streams(使用StreamExStream的包装器来获取更多详细代码)。

在此处查看其他一些方式:https://www.baeldung.com/java-remove-duplicates-from-list

所以您要尝试执行的操作如下所示:

List<Integer> integersWithDupes = Arrays.asList(1, 2, 3, 4, 3, 5);
System.out.println(integersWithDupes.size()); // this is now 6
List<Integer> deduped = StreamEx.of(integersWithDupes).distinct().toList();
System.out.println(deduped.size()); // this is now 5

除非对分配有硬性要求,否则我将避免使用数组,而应使用List接口。它包装了您尝试以更具表现力和更强大的方式完成的许多功能。

编码愉快!

答案 1 :(得分:0)

您可以为此使用IntStream

int[] a = {1,2,1,4,5};
int[] noDuplicates = IntStream.of(a).distinct().toArray();

IntStream.distinct将跳过所有重复的元素,然后toArray()将剩余的元素收集到新数组中。