java - java比较同一个数组的元素,然后删除该元素

标签 java arrays

我有一个像 a[]={1,2,3,4,3,5} 这样的数组,然后我想将第一个元素与第二个、第三个、第四个等等进行比较......第二个元素与 3,4,3,5...然后 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]

最佳答案

听起来很像您想要“删除重复”这个数组。

有多种方法可以处理这个问题,但我更喜欢的方法是 Streams (使用 StreamEx,一个围绕 Stream 的包装器Java 8+ 中的更详细代码)。

在这里查看其他一些方法: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 接口(interface)。它包含了您试图以更具表现力和更强大的方式完成的许多功能。

祝你编码愉快!

关于java - java比较同一个数组的元素,然后删除该元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916430/

相关文章:

C : text file, 字符串比较等

java - (libgdx/scene2d) 使用 Actor 等创建不同的舞台

PHP 和 MySQL 以嵌套数组的形式获取结果

java - 公司存储库出现 "Missing artifact"错误

java - 我们可以使用 public static void main(String [] [] args) 吗?

arrays - 数组导致 'system.outofmemoryexception'

c - 将数组 segmentation 为较小的数组不会返回正确的结果

C# 列表与字节数组在网络上的效率

java - 为什么Byte Buddy缺少与操作码ASTORE对应的StackManipulation实现?

java - iText 中的文本轮廓