美文网首页
列表去重方法实践

列表去重方法实践

作者: 阳公子_ | 来源:发表于2020-07-21 17:29 被阅读0次

在项目过程中出现了一个这样的问题:接口接收的参数(列表类型)有很多重复,需要对这些参数进行去重操作:

  • 首先将list变成stream类型
  • 然后使用stream的distinct()方法直接进行去重
List<String> libAddress = scanDTO.getLibAddress();
List<MavenGavInfo> gavInfoList = libAddress.stream().distinct().map(MavenGavInfo::new).collect(Collectors.toList());

distinct()方法去重原理
distinct()返回由该流的不同元素组成的流。distinct()是Stream接口的方法。distinct()使用hashCode()和equals()方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。如果distinct()正在处理有序流,那么对于重复元素,将保留以遭遇顺序首先出现的元素,并且以这种方式选择不同元素是稳定的。在无序流的情况下,不同元素的选择不一定是稳定的,是可以改变的。distinct()执行有状态的中间操作。在有序流的并行流的情况下,保持distinct()的稳定性是需要很高的代价的,因为它需要大量的缓冲开销。如果我们不需要保持遭遇顺序的一致性,那么我们应该可以使用通过BaseStream.unordered()方法实现的无序流。

::双冒号的作用
这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。比如表达式person -> person.getAge(); 传入参数是person,返回值是person.getAge(),那么方法引用Person::getAge就对应着Function<Person,Integer>类型。

相关文章

  • 列表去重方法实践

    在项目过程中出现了一个这样的问题:接口接收的参数(列表类型)有很多重复,需要对这些参数进行去重操作: 首先将lis...

  • 2019-06-13 python种对列表里的字典进行去重

    python中列表去重的方法是set(),但是没有对列表里的字典进行去重的方法。只好自己写一个。

  • 列表去重的方法

    1、使用set的特性,python的set是一个无需的不重复的元素集(不保证书序) 2、使用keys()方法

  • 列表去重的几个方法

    1.集合 2.formkeys 3.列表解析 4.reduce

  • python列表去重保持顺序不变

    问题描述 一般使用 set() 方法对列表进行去重,列表中数据顺序会发生变化。 解决方法 # 原始列表数据 tes...

  • python 随记(5)

    python 使用set对列表去重,并保持列表原来顺序: list.sort([func])方法如果没有制定fun...

  • vue 中 去重方法 Element列表

    //去重方法 uniq(array){ array.sort(); v...

  • Python 列表去重

    1、去重不保持原来的顺序: 2、去重保持原顺序(reduce): 3、list元素是字典,去重

  • 列表排序/去重

    要求 1.正数在前负数在后2.整数从小到大3.负数从大到小 详解: 默认情况下内置的sort和sorted函数接收...

  • Python对列表去重的4种方法

    开发中对数组、列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序,...

网友评论

      本文标题:列表去重方法实践

      本文链接:https://www.haomeiwen.com/subject/shkwkktx.html