Java数组如何高效去除重复元素,实现数据唯一性?
- 后端开发
- 2025-10-13
- 7
在Java中,去除数组中的重复数据是一个常见的需求,以下是一些常用的方法来去除Java数组中的重复数据:
使用HashSet
HashSet是一个不允许重复元素的集合,因此可以将数组中的元素添加到HashSet中,然后再将HashSet中的元素复制回数组,这种方法简单且效率较高。

使用ArrayList
ArrayList是一个可以动态增长的数组,可以通过遍历数组,将不重复的元素添加到ArrayList中,然后再将ArrayList转换回数组。
import java.util.ArrayList; import java.util.Arrays; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}; ArrayList<Integer> list = new ArrayList<>(); for (Integer num : array) { if (!list.contains(num)) { list.add(num); } } Integer[] uniqueArray = list.toArray(new Integer[0]); System.out.println(Arrays.toString(uniqueArray)); } }
使用LinkedHashSet
LinkedHashSet是一个有序的集合,它结合了HashSet和LinkedList的特点,当添加元素时,LinkedHashSet会按照元素的添加顺序来存储它们,这种方法在需要保持元素顺序的情况下非常有用。
import java.util.LinkedHashSet; import java.util.Arrays; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}; LinkedHashSet<Integer> set = new LinkedHashSet<>(); for (Integer num : array) { set.add(num); } Integer[] uniqueArray = set.toArray(new Integer[0]); System.out.println(Arrays.toString(uniqueArray)); } }
使用自定义方法
有时,你可能需要根据特定的条件来去除重复数据,在这种情况下,你可以编写一个自定义方法来实现这个功能。

import java.util.Arrays; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}; Integer[] uniqueArray = removeDuplicates(array); System.out.println(Arrays.toString(uniqueArray)); } public static Integer[] removeDuplicates(Integer[] array) { LinkedHashSet<Integer> set = new LinkedHashSet<>(); for (Integer num : array) { set.add(num); } return set.toArray(new Integer[0]); } }
表格对比
以下是一个表格,比较了上述四种方法的优缺点:
| 方法 | 优点 | 缺点 |
|---|---|---|
| HashSet | 简单,效率高 | 不保持元素顺序 |
| ArrayList | 保持元素顺序 | 效率较低 |
| LinkedHashSet | 保持元素顺序,效率较高 | 比HashSet略低 |
| 自定义方法 | 可根据需求定制 | 编写复杂 |
FAQs
Q1:如何去除字符串数组中的重复数据?

A1:与整数数组类似,你可以使用HashSet或LinkedHashSet来去除字符串数组中的重复数据,以下是一个示例:
String[] array = {"apple", "banana", "apple", "orange", "banana"}; Set<String> set = new HashSet<>(Arrays.asList(array)); String[] uniqueArray = set.toArray(new String[0]); System.out.println(Arrays.toString(uniqueArray));
Q2:如何去除二维数组中的重复数据?
A2:对于二维数组,你可以使用嵌套循环来检查每个元素是否重复,以下是一个示例:
Integer[][] array = {{1, 2}, {3, 4}, {1, 2}, {5, 6}}; Set<String> set = new HashSet<>(); for (Integer[] subArray : array) { Arrays.sort(subArray); // 确保排序,以便比较 String key = Arrays.toString(subArray); if (!set.contains(key)) { set.add(key); } } Integer[][] uniqueArray = new Integer[set.size()][]; int index = 0; for (String key : set) { uniqueArray[index++] = Arrays.asList(key).stream().map(Integer::parseInt).toArray(Integer[]::new); } System.out.println(Arrays.deepToString(uniqueArray));
这个方法假设二维数组的元素是整数,并且你可以通过将它们转换为字符串来比较它们,如果数组包含复杂数据类型,你可能需要调整比较逻辑。