如何用java查重
使用HashSet查重
HashSet基于哈希表实现,能自动过滤重复元素。将待查重的数据存入HashSet,利用其特性快速判断重复项。
import java.util.HashSet;
public class DuplicateChecker {
public static boolean hasDuplicates(int[] array) {
HashSet<Integer> set = new HashSet<>();
for (int num : array) {
if (!set.add(num)) {
return true; // 发现重复
}
}
return false;
}
}
使用Stream API查重
Java 8的Stream API提供简洁的链式操作,结合distinct()和count()方法可统计重复元素。
import java.util.Arrays;
import java.util.List;
public class StreamDuplicateCheck {
public static boolean checkDuplicates(List<String> list) {
return list.size() != list.stream().distinct().count();
}
}
双重循环遍历比较
适用于小规模数据或需要自定义比较逻辑的场景。通过嵌套循环逐元素比较,但时间复杂度较高(O(n²))。
public class BruteForceCheck {
public static boolean findDuplicates(String[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i].equals(arr[j])) {
return true;
}
}
}
return false;
}
}
使用HashMap计数
通过HashMap记录元素出现次数,适用于需要统计重复次数的场景。
import java.util.HashMap;
public class CountDuplicates {
public static void printDuplicates(int[] array) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int num : array) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
map.forEach((key, value) -> {
if (value > 1) {
System.out.println("重复元素: " + key + ", 次数: " + value);
}
});
}
}
针对对象列表的查重
若需检查自定义对象的重复性,需重写equals()和hashCode()方法,再使用上述集合类。

import java.util.HashSet;
class Person {
private String name;
private int age;
// 构造方法、getter/setter省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return 31 * name.hashCode() + age;
}
}
public class ObjectDuplicateCheck {
public static boolean checkPersonDuplicates(HashSet<Person> people) {
return people.size() != new HashSet<>(people).size();
}
}






