数组去重 java
时间: 2025-05-19 08:26:47 浏览: 25
### Java中数组去重的方法
在Java中,可以通过多种方式实现数组的去重操作。以下是几种常见的方法及其对应的代码示例。
#### 方法一:使用`HashSet`去重
通过`HashSet`的数据结构特性(不允许存储重复元素),可以轻松实现数组去重的功能。具体过程如下:
1. 创建一个`HashSet`实例。
2. 将原数组中的所有元素添加到该`HashSet`中。
3. 如果需要返回数组形式的结果,则将`HashSet`重新转换为数组。
```java
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class ArrayDeduplication {
public static void main(String[] args) {
Integer[] array = {1, 2, 2, 3, 4, 4, 5};
// 使用HashSet去重
Set<Integer> set = new HashSet<>(Arrays.asList(array));
// 将Set转换回数组
Integer[] uniqueArray = set.toArray(new Integer[0]);
// 打印去重后的数组
System.out.println(Arrays.toString(uniqueArray));
}
}
```
这种方法简单高效,适用于大多数场景[^1]。
---
#### 方法二:基于`List`接口的`contains()`方法
另一种常见的方式是利用`List`接口提供的`contains()`方法来判断是否已存在某元素。此方法的具体流程如下:
1. 遍历原始数组。
2. 对于每一个元素,先检查目标列表中是否存在相同项。
3. 若不存在则将其加入目标列表。
4. 最终可选择将列表转回数组形式。
```java
import java.util.ArrayList;
import java.util.List;
class ListBasedDeduplication {
public int[] deduplicate(int[] arr){
List<Integer> list = new ArrayList<>();
for (int num : arr){
if (!list.contains(num)){
list.add(num);
}
}
// 转换为数组
int[] result = new int[list.size()];
for (int i=0;i<result.length;i++){
result[i]=list.get(i);
}
return result;
}
}
class Test{
public static void main(String[] args){
int[] arr={1,2,2,3,3,3};
int[] res=new ListBasedDeduplication().deduplicate(arr);
for (int r:res){
System.out.print(r+" ");
}
}
}
```
这种方式虽然逻辑清晰易懂,但在大规模数据集上性能可能不如前一种方案好,因为每次调用`contains()`都会带来额外开销[^3]。
---
#### 方法三:针对对象数组按特定字段去重
当面对的对象是一个包含多个键值对的对象数组时,可以根据某些指定条件来进行更复杂的过滤操作。比如下面的例子展示了按照`job`属性去除冗余条目的一种做法:
```javascript
var arr = [
{id: 1,name:'张三',job:'前端'},
{id: 2,name:'李四',job:'前端'},
{id: 3,name:'王五',job:'java'}
];
// 新建一个用于保存唯一jobs的新数组newArr;
let seenJobs = {};
let newArr = [];
for(let item of arr){
let jobName=item.job;
if(!seenJobs[jobName]){
newArr.push(item);
seenJobs[jobName]=true;
}
}
console.log(JSON.stringify(newArr,null,' '));
```
注意这里给出的是JavaScript版本的解决方案,在实际应用过程中需依据具体的业务需求调整相应的语言环境[^4]。
---
#### 总结
上述三种方法各有优劣之处,开发者应根据实际情况选取最适合的技术手段解决问题。对于简单的数值型或者字符串类型的数组来说,推荐优先考虑采用第一种即借助集合类库的方式来达成目的;而对于较为复杂的数据模型而言,则要综合考量多方面因素后再做决定。
阅读全文
相关推荐


















