java8 中List根据某一字段 去重 【延伸介绍另外一种方式】

简介: java8 中List根据某一字段 去重 【延伸介绍另外一种方式】

在你的集合后方加入这么一段代码:

       //去重用户名称
       List<User> userList = new ArrayList<User>();
       userList =  userList.stream().collect(
            Collectors.collectingAndThen(Collectors.toCollection(
                () -> new TreeSet<>(Comparator.comparing(User::getUserName))), ArrayList::new));

fa32de5cdb931d0ab6e667cc862f0f0.png

对应的几个使用类需要的包:

Collectors:java.util.stream.Collectors

Comparator:java.util.Comparator

TreeSet:java.util.TreeSet

所要去重的字段,有空值的时候,会空指针异常,提示大家加上判断条件

 

如果是单字段,可使用如下方法:

public static void main(String[] args) {
    List<String> stringList = new ArrayList<String>();
    //电话号码
    String getContactorPhoneNum1="12345678910";
    String getContactorPhoneNum2="12345678911";
    String getContactorPhoneNum3="12345678910";
    String getContactorPhoneNum4="12345678911";
    //多次插入到集合
    stringList.add(getContactorPhoneNum1);
    stringList.add(getContactorPhoneNum2);
    stringList.add(getContactorPhoneNum3);
    stringList.add(getContactorPhoneNum4);
    //进行去重
    HashSet<String> hs = new HashSet<String>(stringList);   
    stringList.clear();   
    stringList.addAll(hs);
        //打印到控制台
    System.out.println(stringList);
}

2c60471d3d76c759228675cab4fae6c.png

目录
相关文章
|
3月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
72 5
|
3月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
67 3
|
3月前
|
Java 程序员
Java|List.subList 踩坑小记
不应该仅凭印象和猜测,就开始使用一个方法,至少花一分钟认真读完它的官方注释文档。
33 1
|
4月前
|
安全 Java 编译器
java访问字段
java访问字段
31 6
|
4月前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
5月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
51 5
|
4月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
110 1
|
5月前
|
存储 Java API
【Java高手必备】揭秘!如何优雅地对List进行排序?掌握这几种技巧,让你的代码瞬间高大上!
【8月更文挑战第23天】本文深入探讨了Java中对List集合进行排序的各种方法,包括使用Collections.sort()、自定义Comparator以及Java 8的Stream API。通过示例代码展示了不同情况下如何选择合适的方法:从简单的整数排序到自定义类对象的排序,再到利用Comparator指定特殊排序规则,最后介绍了Stream API在排序操作中的简洁应用。理解这些技术的区别与应用场景有助于提高编程效率。
146 4
|
5月前
|
BI
【Azure Power BI】Power BI获取SharePoint List列表后,如何展开List/Table中的字段,以及使用逗号拼接为一个字符串
【Azure Power BI】Power BI获取SharePoint List列表后,如何展开List/Table中的字段,以及使用逗号拼接为一个字符串
|
5月前
|
存储 Java 索引