如何在 java 中检查或检测数组中的重复元素
检测 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 collection api,也可以有其他纯编程ag捕鱼王app官网的解决方案。 在真正的面试中,你可能会被要求在不使用 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 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,