
List去除重复数据的五种方式
发布日期:2025-04-10 23:48:33
浏览次数:9
分类:精选文章
本文共 3015 字,大约阅读时间需要 10 分钟。
Java ArrayList 中去重的五种方法
1. 使用 LinkedHashSet 删除重复数据
LinkedHashSet 是处理 Java ArrayList 重复数据的理想选择。它不仅能自动删除重复项,还能保持数据的原始顺序。这使得它在数据迁移过程中特别有用。
示例代码
import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedHashSet;public class ArrayListExample { public static void main(String[] args) { ArrayListnumbersList = new ArrayList<>(Arrays.asList( 1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8 )); System.out.println("原始列表:" + numbersList); LinkedHashSet hashSet = new LinkedHashSet<>(numbersList); ArrayList listWithoutDuplicates = new ArrayList<>(hashSet); System.out.println("去重后的列表:" + listWithoutDuplicates); }}
输出结果
原始列表:[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]去重后的列表:[1, 2, 3, 4, 5, 6, 7, 8]
2. 使用 Java 8 Stream API 去重
Java 8 引入了 Stream API,提供了更加简洁的去重方法。通过 stream().distinct()
可以轻松实现去重操作。
示例代码
import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class ArrayListExample { public static void main(String[] args) { ArrayListnumbersList = new ArrayList<>(Arrays.asList( 1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8 )); System.out.println("原始列表:" + numbersList); List listWithoutDuplicates = numbersList.stream() .distinct() .collect(Collectors.toList()); System.out.println("去重后的列表:" + listWithoutDuplicates); }}
输出结果
原始列表:[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]去重后的列表:[1, 2, 3, 4, 5, 6, 7, 8]
3. 使用 HashSet 判断重复项
HashSet 的特性是无法添加重复数据的。可以利用这一点,结合 ArrayList 本身的循环机制来实现去重。
示例代码
private static void removeDuplicate(Listlist) { HashSet set = new HashSet<>(list.size()); ArrayList result = new ArrayList<>(list.size()); for (String str : list) { if (set.add(str)) { result.add(str); } } list.clear(); list.addAll(result);}
使用方法
ListoriginalList = Arrays.asList("a", "a", "b", "b", "c");removeDuplicate(originalList);System.out.println(originalList); // [a, a, b, b, c]
4. 使用 List 的 contains 方法手动去重
通过手动遍历列表并使用 contains
方法来检查元素是否已经存在,可以实现去重的功能。这种方法适用于较小的数据量。
示例代码
private static void removeDuplicate(Listlist) { ArrayList result = new ArrayList<>(list.size()); for (String str : list) { if (!result.contains(str)) { result.add(str); } } list.clear(); list.addAll(result);}
使用方法
ListoriginalList = Arrays.asList("a", "a", "b", "b", "c");removeDuplicate(originalList);System.out.println(originalList); // [a, a, b, b, c]
5. 双重循环手动去重
通过双重循环遍历列表,检查每个元素是否是重复项,并逐一删除。
示例代码
for (int i = 0; i < list.size(); i++) { for (int j = 0; j < list.size(); j++) { if (i != j && list.get(i).equals(list.get(j))) { list.remove(list.get(j)); } }}
注意事项
这种方法可能会导致列表大小在循环过程中发生变化,影响性能。因此,通常不推荐在实际应用中使用。
通过以上五种方法,可以根据具体需求选择最适合的去重方式。每种方法都有其优缺点,选择时需综合考虑性能、代码复杂度和数据规模。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年05月12日 14时52分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux配置IP命令
2023-02-05
Linux配置jdk环境
2023-02-05
Linux里的档案权限入门!!!
2023-02-05
Linux重启 Redis自动启动
2023-02-05
linux问题点滴,给普通用户添加sudo权限
2023-02-05
Linux防火墙-iptables
2023-02-05
linux防火墙iptables简单介绍
2023-02-05
Linux防火墙实现SNAT与DNAT
2023-02-05
Linux防火墙应用实践
2023-02-05
linux防火墙规则
2023-02-05
Linux静态库和共享库【转】
2023-02-05
Linux面试题总结
2023-02-05
Linux高手最常使用的五个快捷键,零基础入门到精通,收藏这一篇就够了
2023-02-05
linux高级技巧:heartbeat+lvs(二)
2023-02-05
linux高级数据存储
2023-02-05
Linux高阶知识:Linux 中的隐藏文件
2023-02-05
Linux(10):安装mysql5.7
2023-02-05
Linux(11):设置固定ip
2023-02-05
Linux(12):上传下载命令rz和sz
2023-02-05
Linux(13):压缩和解压缩命令
2023-02-05