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) {        ArrayList
numbersList = 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) {        ArrayList
numbersList = 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(List
list) { 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);}

使用方法

List
originalList = 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(List
list) { ArrayList
result = new ArrayList<>(list.size()); for (String str : list) { if (!result.contains(str)) { result.add(str); } } list.clear(); list.addAll(result);}

使用方法

List
originalList = 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));        }    }}

注意事项

这种方法可能会导致列表大小在循环过程中发生变化,影响性能。因此,通常不推荐在实际应用中使用。


通过以上五种方法,可以根据具体需求选择最适合的去重方式。每种方法都有其优缺点,选择时需综合考虑性能、代码复杂度和数据规模。

上一篇:list多条件排序
下一篇:List去重工具类

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年05月12日 14时52分36秒