Java ArrayList去重方法:for循环、迭代器与HashSet
需积分: 27 70 浏览量
更新于2024-08-04
收藏 2KB TXT 举报
"在Java编程中,处理列表(List)集合时,有时我们需要去除其中的重复元素。本示例展示了三种不同的方法来实现这一目标:1) 使用for循环去重,2) 使用迭代器(Iterator)去重,以及3) 利用HashSet的特性去重。这里以ArrayList为例进行操作。"
在Java中,ArrayList是一种常用的列表实现,它允许我们在列表中存储和操作对象。当我们需要去除ArrayList中的重复元素时,可以采用以下策略:
1. **使用for循环去重**:
在这段代码中,使用了两层for循环,外层循环遍历列表中的每个元素,内层循环检查当前元素是否与后面的所有元素相等。如果找到相等的元素,就使用`list.remove(j)`方法删除重复的元素。这种方法简单直观,但效率较低,因为每次删除元素后都需要调整列表的结构。
```java
for (int i = 0; i < list.size(); i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i) == list.get(j)) {
list.remove(j);
j--;
}
}
}
System.out.println(list);
```
2. **使用迭代器去重**:
这种方法通过获取ArrayList的迭代器,然后遍历列表,检查每个元素是否在列表中还有其他位置出现。如果使用`indexOf()`和`lastIndexOf()`方法发现元素有多个副本,就使用`iterator.remove()`移除多余的元素。这种方法避免了在循环中直接修改列表,提高了安全性。
```java
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer i = iterator.next();
if (list.indexOf(i) != list.lastIndexOf(i)) {
iterator.remove();
}
}
System.out.println(list);
System.out.println("========================");
```
3. **利用HashSet特性去重**:
HashSet是Java中的一个无序且不允许重复元素的集合。我们可以将ArrayList中的所有元素添加到HashSet中,由于HashSet的特性,重复元素会被自动去除。最后,再将HashSet转换回ArrayList。这是最有效的方法,但需要注意,HashSet不保持元素的原始顺序。
```java
HashSet<Integer> set = new HashSet<>();
set.addAll(list);
System.out.println(set);
```
总结来说,这三种方法各有优缺点。for循环去重简单易懂,但效率较低;迭代器去重提高了安全性,但仍有潜在问题,如并发修改异常;而HashSet去重则是最高效且简洁的方式,但不保留元素原有的顺序。在实际应用中,应根据具体需求选择合适的方法。
2011-01-05 上传
2023-06-13 上传
2023-06-10 上传
2023-06-28 上传
2024-10-23 上传
2023-03-31 上传
2023-05-05 上传
2023-03-21 上传
2023-06-06 上传
qq_57513566
- 粉丝: 7
- 资源: 3
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载