Java中实现两个数组去重的方法有哪些?如何有效合并并去除重复元素?
- 后端开发
- 2025-09-18
- 8
在Java中,将两个数组进行去重处理是一个常见的需求,这可以通过多种方法实现,以下是一些常见的方法和示例。
使用HashSet
HashSet是一个不允许重复元素的集合,我们可以利用这个特性来去重。

使用ArrayList和contains方法
通过遍历第一个数组,并将每个元素添加到ArrayList中,然后遍历第二个数组,并检查每个元素是否已存在于ArrayList中,从而实现去重。
import java.util.ArrayList; import java.util.List; public class ArrayDeduplication { public static void main(String[] args) { Integer[] array1 = {1, 2, 3, 4, 5, 1, 2}; Integer[] array2 = {3, 4, 5, 6, 7, 3, 4}; List<Integer> list = new ArrayList<>(); for (Integer num : array1) { if (!list.contains(num)) { list.add(num); } } for (Integer num : array2) { if (!list.contains(num)) { list.add(num); } } Integer[] deduplicatedArray = list.toArray(new Integer[0]); for (Integer num : deduplicatedArray) { System.out.print(num + " "); } } }
使用LinkedHashSet
如果需要保持元素的插入顺序,可以使用LinkedHashSet。

import java.util.LinkedHashSet; import java.util.Set; public class ArrayDeduplication { public static void main(String[] args) { Integer[] array1 = {1, 2, 3, 4, 5, 1, 2}; Integer[] array2 = {3, 4, 5, 6, 7, 3, 4}; Set<Integer> set = new LinkedHashSet<>(); for (Integer num : array1) { set.add(num); } for (Integer num : array2) { set.add(num); } Integer[] deduplicatedArray = set.toArray(new Integer[0]); for (Integer num : deduplicatedArray) { System.out.print(num + " "); } } }
FAQs
Q1:为什么使用HashSet而不是ArrayList?
A1:HashSet是基于哈希表实现的,它提供了常数时间复杂度的添加和查找操作,而ArrayList是基于数组实现的,添加和查找操作的时间复杂度为O(n),当处理大量数据时,HashSet更高效。
Q2:如果数组中的元素是自定义对象,如何进行去重?
A2:如果数组中的元素是自定义对象,你可以重写equals()和hashCode()方法,使得相同的对象在HashSet中视为相同,你可以在HashSet中添加这些对象,从而实现去重。
