迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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/05/01 浏览次数:139 分类:Java

Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。

Java 中的文件分隔符

发布时间:2023/05/01 浏览次数:108 分类:Java

本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。

Java 中的文件过滤器

发布时间:2023/05/01 浏览次数:193 分类:Java

本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。

Java 获取 ISO 8601 格式的当前时间戳

发布时间:2023/05/01 浏览次数:132 分类:Java

本篇文章介绍了 ISO 8601 日期格式、其重要性及其在 Java 中的使用。 它还列出了一些优点来强调为什么应该使用 ISO 格式来表示日期。

在 Java 中获取数组的子集

发布时间:2023/05/01 浏览次数:142 分类:Java

本篇文章介绍了几种在 Java 中获取数组子集的方法。使用 Arrays.copyOf() 方法获取数组的子集 使用 Arrays.copyOfRange() 方法获取数组的子集

用 Java 填充二维数组

发布时间:2023/05/01 浏览次数:110 分类:Java

二维数组是基于表结构的,即行和列,填充二维数组不能通过简单的添加到数组操作来完成。 本篇文章介绍如何在 Java 中填充二维数组。

Java 中的自然排序

发布时间:2023/05/01 浏览次数:132 分类:Java

Java 中最常用的顺序是自然顺序。 本文将展示如何使用 naturalOrder() 函数对数组进行排序。

计算 Java 数组中的重复元素

发布时间:2023/05/01 浏览次数:202 分类:Java

本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。

Java 中 List 和 Arraylist 的区别

发布时间:2023/05/01 浏览次数:90 分类:Java

表示为单个单元的一组单个对象称为集合。 在 Java 中,Collection 是一个具有多个已定义接口和类的框架,用于将一组对象表示为一个单元。 它允许我们操纵

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便