【java】如何判断数组中的内容是否重复

本文介绍了一种使用HashSet数据结构来判断数组中元素是否全部唯一的高效方法。通过对比HashSet与原数组长度,快速检测重复项,适用于多种类型数组,如long和int。

代码实现:

public static boolean judgeArray(long[] arraySample) {
	HashSet<Long> hashSet = new HashSet<Long>();
	for (int i = 0; i < arraySample.length; i++) {
		hashSet.add(arraySample[i]);
	}
	if (hashSet.size() == arraySample.length) {
		return true;
	} else {
		return false;
	}
}

注:

1、以上代码不止可以判断long类型的数组,比如要判断int类型的数组的话就将代码里对应的Long改为Integer(注意,是封装类)

2、判断思路,使用到HashSet的内容不会重复的特点,比较hashSet和原数组的长度,如果发生了重复则hashSet的长度一定会小于原数组。

Java 中,判断数组是否存在重复值有多种实现方法: ### 使用 HashSet 利用 `HashSet` 不能存储重复元素的特性,将数组元素添加到 `HashSet` 中,若 `HashSet` 的大小与数组长度相等,则表示数组中无重复元素,反之则有重复元素。示例代码如下: ```java import java.util.HashSet; public class test2 { public static boolean cheakIsRepeat(int[] array) { HashSet<Integer> hashSet = new HashSet<>(); for (int i = 0; i < array.length; i++) { hashSet.add(array[i]); } return hashSet.size() == array.length; } public static void main(String[] args) { int[] array = { 1, 2, 3, 4, 6, 7, 8, 9 }; if (cheakIsRepeat(array)) { System.out.println("没有重复值!"); } else { System.out.println("有重复值!"); } } } ``` ### 双重循环遍历 通过双重循环,将每个元素与数组中的其他元素进行比较,若找到相同元素,则表示存在重复值。示例代码如下: ```java public class Main { public static void main(String[] args) { int[] arry = {1, 10, 5, 8, 11, 100, 99, 10}; boolean flag = false; for (int i = 0; i < arry.length; i++) { int temp = arry[i]; int count = 0; for (int j = 0; j < arry.length; j++) { int temp2 = arry[j]; if (temp == temp2) { count++; } } if (count >= 2) { flag = true; } } if (flag) { System.out.println("有重复值存在!!!"); } else { System.out.println("没有重复值存在!!!"); } } } ``` ### 使用列表和 `contains` 方法 利用一个列表逐个记录对象,使用 `contains` 方法判断元素是否已存在于列表中,若存在则表示有重复值。示例代码如下: ```java import java.util.ArrayList; import java.util.List; public class Main { private static boolean hasDuplicate(String[] objArray) { List<String> recordList = new ArrayList<>(); for (int i = 0; i < objArray.length; i++) { if (!recordList.contains(objArray[i])) { recordList.add(objArray[i]); } else { return true; } } return false; } public static void main(String[] args) { String[] objArray = {"apple", "banana", "apple"}; if (hasDuplicate(objArray)) { System.out.println("有重复值!"); } else { System.out.println("没有重复值!"); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值