Java数组去重方法详解与实操技巧,有哪些高效技巧?
- 后端开发
- 2025-09-25
- 4
Java数组去重是一个常见的需求,特别是在处理数据或进行数据清洗时,以下是一些常用的方法来实现Java数组的去重。
使用HashSet
HashSet是一个不允许重复元素的集合,可以利用这个特性来实现数组的去重。
使用ArrayList
将数组元素添加到ArrayList中,然后遍历ArrayList,移除重复的元素。
import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; 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<>(Arrays.asList(array)); Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()) { Integer current = iterator.next(); if (list.indexOf(current) != list.lastIndexOf(current)) { iterator.remove(); } } Integer[] uniqueArray = list.toArray(new Integer[0]); System.out.println(Arrays.toString(uniqueArray)); } }
使用自定义方法
可以编写一个自定义方法来遍历数组,并检查每个元素是否已存在于新数组中。

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}; Integer[] uniqueArray = removeDuplicates(array); System.out.println(Arrays.toString(uniqueArray)); } public static Integer[] removeDuplicates(Integer[] array) { ArrayList<Integer> list = new ArrayList<>(); for (Integer element : array) { if (!list.contains(element)) { list.add(element); } } return list.toArray(new Integer[0]); } }
使用Stream API
Java 8引入了Stream API,可以使用它来简化数组的去重。

import java.util.Arrays; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}; Integer[] uniqueArray = Arrays.stream(array) .distinct() .toArray(Integer[]::new); System.out.println(Arrays.toString(uniqueArray)); } }
表格对比
| 方法 | 优点 | 缺点 |
|---|---|---|
| HashSet | 简单,高效 | 需要创建新的HashSet对象 |
| ArrayList | 不需要创建新的集合 | 需要遍历整个列表 |
| 自定义方法 | 不需要创建新的集合 | 需要编写额外的逻辑 |
| Stream API | 简洁,易于理解 | 需要Java 8及以上版本 |
FAQs
Q1:如果数组中的元素是自定义对象,如何去重?
A1:如果数组中的元素是自定义对象,可以使用对象的equals()和hashCode()方法来实现去重,确保自定义对象重写了这两个方法,然后可以使用HashSet或Stream API来去重。
Q2:如果数组中包含重复的字符串,如何去重?
A2:如果数组中包含重复的字符串,可以使用HashSet或Stream API来去重,HashSet会自动去除重复的字符串,而Stream API中的distinct()方法也会实现相同的功能。
