迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

如何在 Java 中检查或检测数组中的重复元素

作者:迹忆客 最近更新:2023/05/09 浏览次数:

检测 Java 数组中的重复元素是我喜欢的另一个编程面试问题。 可能有很多方法可以检查数组是否包含重复元素,有时我们会通过在 Java 面试中提出这个问题来发现检查重复项的独特方法。 这个问题的美妙之处在于它有无数的后续问题,所以如果受访者通过了这个问题,你可以问他关于时间复杂度和空间的问题,或者改进他的算法以使其更快。你甚至可以要求找到 Array 中的那些重复元素,甚至可以从 Array 中的一个重复元素变成许多重复元素。 正如我所说,这样可以真正测试 Java 程序员的编程技能。


检查数组中是否有重复元素 Java

在本 Java 教程中,我们将看到几种在 Java 中查找数组是否包含重复项的方法。 我们将使用不允许重复的 Java 集合类 Set 的唯一属性来检查 java 数组中的重复元素。 这里有五种方法可以检查数组是否有重复项:

1. 暴力破解算法

蛮力方法将 Array 的每个元素与所有其他元素进行比较,如果发现重复则返回 true。 尽管这不是一个有效的选择,但它是第一个想到的选择。

2. 使用集合数据结构

检查 Java 数组是否包含重复项的另一种快速方法是将该数组转换为 Set。 由于 Set 不允许重复,如果 Array 包含重复项,则相应 Set 的大小将小于原始 Array,否则 Array 和 Set 的大小将相同。

3.在Java中使用 HashSet

在 java 数组中检测重复的另一种方法是将数组的每个元素添加到 HashSet 中,这是一个 Set 实现。 由于如果 Set 已经包含要添加的元素,则 Set 的 add(Object obj) 方法返回 false,因此可用于查明数组是否包含 Java 中的重复元素。

此外,基本数据结构的基础知识也非常重要。

在下一节中,我们将在 java 中完成对 Array 的所有三种重复检测方式的代码示例。 请记住,此讨论只是确认一个数组是否包含重复项,它并没有从数组中找出实际的重复元素,尽管您可以轻松地扩展示例 Java 程序以根据您的要求完成该任务。

这也是流行的编程面试问题之一,在几个面试中被问到。


Java中检查数组重复项的代码示例

这是上述所有方法的完整代码示例,用于检查数组是否包含重复项。

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class CheckDuplicatesInJavaArray {

    public static void main(String args[]) {

        String[] withDuplicates = new String[]{"one", "two", "three", "one"};
        String[] withoutDuplicates = new String[]{"one", "two", "three"};

        System.out.println("Checking array with duplicate using brute force: " + bruteforce(withDuplicates));
        System.out.println("Checking array without any duplicate using brute force: " + bruteforce(withoutDuplicates));

        System.out.println("Checking array with duplicate using Set and List: " + checkDuplicateUsingSet(withDuplicates));
        System.out.println("Checking array without any duplicate using Set and List: " + checkDuplicateUsingSet(withoutDuplicates));


        System.out.println("Checking array with duplicate using Set and List: " + checkDuplicateUsingAdd(withDuplicates));
        System.out.println("Checking array without any duplicate using Set and List: " + checkDuplicateUsingAdd(withoutDuplicates));


    }

    /*
     * 在 Java 中检查数组是否包含重复项的蛮力方法
     * 将每个元素与数组复杂度的所有其他元素进行比较,
     * 在生产中不建议按 O(n^2) 的顺序进行
     */
    public static boolean bruteforce(String[] input) {
        for (int i = 0; i < input.length; i++) {
            for (int j = 0; j < input.length; j++) {
                if (input[i].equals(input[j]) && i != j) {
                    return true;
                }
            }
        }
        return false;
    }

    /*
     * 通过比较 List 和 Set 的大小来检测数组中的重复项,因为 Set 不包含重复项,对于包含重复项的数组,大小必须更小
     */
    public static boolean checkDuplicateUsingSet(String[] input) {
        List inputList = Arrays.asList(input);
        Set inputSet = new HashSet(inputList);
        if (inputSet.size() < inputList.size()) {
            return true;
        }
        return false;
    }

    /*
     * 由于 Set 不允许重复 add() 返回 false
     * 如果我们尝试将重复项添加到 Set 并且此属性可用于检查数组是否包含 Java 中的重复项
     */
    public static boolean checkDuplicateUsingAdd(String[] input) {
        Set tempSet = new HashSet();
        for (String str : input) {
            if (!tempSet.add(str)) {
                return true;
            }
        }
        return false;
    }
}

上述代码输出结果如下

Java 检查或检测数组中的重复元素

这就是关于如何在 Java 中检查数组是否包含重复项的全部内容。 大家会看到我们在两个示例中使用了 Java Collection API,也可以有其他纯编程解决方案。 在真正的面试中,你可能会被要求在不使用 Java API 的情况下检测重复项。 如果遇到其他不使用 Java API 检查数组中重复项的好方法,请告诉我们。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便