博客
关于我
List 去重的 6 种方法,这个方法最完美
阅读量:792 次
发布时间:2023-02-05

本文共 1655 字,大约阅读时间需要 5 分钟。

在日常的业务开发中,经常会遇到需要清除List集合中重复数据的需求。有人可能会问,为什么不直接使用Set或者LinkedHashSet呢?毕竟,这样就能避免重复数据的问题了。

不过,在实际开发中,问题往往比想象中复杂。例如,List可能是由于历史原因留下的遗留系统,或者是接口返回的类型限制只能使用List接收,或者是在开发过程中写了一半,后来才发现需要去重。无论原因如何,这里就不一一列举了。

当发现需要去重时,如果能够通过代码改造,将原有的List类型替换为Set类型,那么问题就迎刃而解。但如果无法修改集合的类型,或者修改成本过高,那么接下来的6种去重方法将为你提供解决方案。

前置知识

在正式开始之前,先了解一下两个关键概念:无序集合与有序集合,以及无序与有序的区别。因为接下来的方法实现中,会反复提及这两个概念,所以在正式开始之前,先把它们搞清楚。

无序集合是指,数据读取的顺序和数据插入的顺序不一致。例如,插入顺序是1、5、3、7,而读取顺序却是1、3、5、7。

有序集合的概念与无序集合的概念正好相反,它是指数据读取的顺序和插入顺序是一致的。例如,插入数据的顺序是1、5、3、7,那么读取的顺序也是1、5、3、7。

通过上面的无序集合和有序集合的概念,我们可以得出有序和无序的概念。

有序指的是数据的排列顺序和读取顺序符合我们的预期就叫做有序。而无序指的是数据的排列顺序和读取顺序不符合我们的预期就叫做无序。

方法1:contains判断去重(有序)

要进行数据去重,我们可以使用这种方法。具体实现方式如下:

  • 创建一个新的集合,用于存储去重后的数据。
  • 遍历原集合中的每一个元素。
  • 对于当前元素,检查它是否已经存在于新集合中。
  • 如果不存在,则将其添加到新集合中。
  • 如果已经存在,则跳过该元素。
  • 最终,新集合中将只包含唯一的元素。
  • 这种方法适用于需要保持数据有序的情况。例如,如果需要按照原集合的顺序保留唯一的元素,可以使用这种方法。

    代码示例

    import java.util.ArrayList;import java.util.List;public class ListDistinctExample {    public static void main(String[] args) {        List
    list = new ArrayList<>(); list.add(1); list.add(3); list.add(5); list.add(2); list.add(1); list.add(3); list.add(7); list.add(2); List
    distinctList = new ArrayList<>(); for (Integer num : list) { if (!distinctList.contains(num)) { distinctList.add(num); } } System.out.println("去重后的列表: " + distinctList); }}

    代码解释

  • 首先,我们创建了一个新的List对象distinctList,用于存储去重后的数据。
  • 然后,遍历了原List中的每一个元素。
  • 对于每一个元素,我们使用contains方法检查它是否已经存在于distinctList中。
  • 如果不存在,则将其添加到distinctList中。
  • 如果已经存在,则跳过该元素。
  • 最后,输出了去重后的列表。
  • 这种方法简单直观,适用于需要保持数据有序的情况。然而,如果需要同时保持数据的有序性和较高的性能,可以考虑使用其他方法。

    转载地址:http://bzufk.baihongyu.com/

    你可能感兴趣的文章