java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java List数据去重

Java中List数据去重的3种有效方法总结

作者:_Lemon7

在Java编程中,List集合是一种常用的数据结构,它允许我们存储和操作一组有序的对象,这篇文章主要介绍了Java中List数据去重的3种有效方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在日常 Java 开发中,List 集合去重是一个非常常见的需求。根据 是否需要保持顺序、数据规模大小、JDK 版本 的不同,去重方式也有所区别。

本文总结了 5 种常见且实用的 List 去重方法,并对每种方法的使用场景、优缺点进行了说明,供大家在实际项目中选择合适的方案。

一、使用 Java 8 Stream 的distinct()方法(推荐)

适用场景

示例代码

public static List<String> delRepeat(List<String> list) {
    return list.stream()
               .distinct()
               .collect(Collectors.toList());
}

原理说明

优缺点

优点:

缺点:

二、借助 Set 的特性进行去重(List 与 Set 转换)

适用场景

示例代码

/**
 * 去除重复数据
 * 注意:Set 是无序的,不会保持原有顺序
 */
public static List<String> listDistinct(List<String> list) {
    List<String> result = new ArrayList<>();
    if (list != null && !list.isEmpty()) {
        Set<String> set = new HashSet<>(list);
        result.addAll(set);
    }
    return result;
}

原理说明

优缺点

优点:

缺点:

三、遍历 List,将元素添加到另一个 List 中(保持顺序)

适用场景

示例代码

public static List<String> delRepeat(List<String> list) {
    List<String> listNew = new ArrayList<>();
    for (String str : list) {
        if (!listNew.contains(str)) {
            listNew.add(str);
        }
    }
    return listNew;
}

原理说明

优缺点

优点:

缺点:

四、利用 Set 去重并保持原有顺序(强烈推荐)

如果既想去重,又想保持顺序,这是非常实用的一种方式。

方法一:使用TreeSet(会排序)

List<String> listNew = new ArrayList<>(new TreeSet<>(list));

注意:

方法二:使用LinkedHashSet(推荐)

List<String> listNew = new ArrayList<>(new LinkedHashSet<>(list));

原理说明

优缺点

优点:

缺点:

实际开发中非常推荐这一种方式

五、使用 List 的remove()方法去重(不推荐 )

适用场景

示例代码

/**
 * 去除重复数据(一般不推荐)
 * 类似于冒泡排序思想
 */
public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) {
    if (list != null && list.size() > 0) {
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = list.size() - 1; j > i; j--) {
                // 根据实际业务修改比较规则
                if (list.get(j).equals(list.get(i))) {
                    list.remove(j);
                }
            }
        }
    }
    return list;
}

缺点

总结对比

方法是否推荐是否保持顺序适用场景
Stream distinct⭐⭐⭐⭐⭐JDK 8+,代码简洁
HashSet 转换⭐⭐⭐不关心顺序
遍历 List⭐⭐小数据量
LinkedHashSet⭐⭐⭐⭐⭐最常用、最稳妥
remove() 去重不推荐

到此这篇关于Java中List数据去重的3种有效方法的文章就介绍到这了,更多相关Java List数据去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文