List 集合去除重复元素的5种方法

简介: List 集合去除重复元素的5种方法

1、for循环添加去重

    List<String> oldList = new ArrayList<>();
        oldList.add("张三");
        oldList.add("张三");
        oldList.add("李四");
        oldList.add("王五");
        oldList.add("赵六");
        List<Object> newList = Lists.newArrayList();
        for (String name : oldList) {
            if (!newList.contains(name)){
                newList.add(name);
            }
        }
        System.out.println("原本的集合原素"+oldList);
        System.out.println("去重后的集合"+newList);

打印结果如下:

a77a5f43d9354c8b8c08657f98790b06.png

2、for 双循环去重

    @Test
    void contextLoads3() {
        List<String> oldList = new ArrayList<>();
        oldList.add("张三");
        oldList.add("张三");
        oldList.add("李四");
        oldList.add("王五");
        oldList.add("赵六");
        for (int i = 0; i < oldList.size() - 1; i++) {
            for (int j = oldList.size() - 1; j>1 ; j--) {
                if (oldList.get(j).equals(oldList.get(i))) {
                    oldList.remove(j);
                }
            }
        }
        System.out.println("原本的集合原素"+oldList);
    }

打印结果如下:

30702a26603b4eec8b39facbd79307fe.png

3、for 双循环重复坐标去重

   @Test
    void contextLoads4() {
        List<String> oldList = new ArrayList<>();
        oldList.add("张三");
        oldList.add("张三");
        oldList.add("李四");
        oldList.add("王五");
        oldList.add("赵六");
        List<String> newList = Lists.newArrayList();
        newList.addAll(oldList);
        for (String name : newList) {
            if (oldList.indexOf(name) != oldList.lastIndexOf(name)) {
                oldList.remove(oldList.lastIndexOf(name));
            }
        }
        System.out.println("原本的集合原素"+oldList);
    }

打印结果如下:

c1c2f5c87436491495f1ea280ecc1219.png

4、Set去重

    @Test
    void contextLoads5() {
        List<String> oldList = new ArrayList<>();
        oldList.add("张三");
        oldList.add("张三");
        oldList.add("李四");
        oldList.add("王五");
        oldList.add("赵六");
        List<String> newList = Lists.newArrayList(new HashSet(oldList));
        System.out.println("原本的集合原素"+newList);
    }

打印结果如下:

17dd8280a9554c6185c3f60661ec374e.png

5、stream流去重

    @Test
    void contextLoads5() {
        List<String> oldList = new ArrayList<>();
        oldList.add("张三");
        oldList.add("张三");
        oldList.add("李四");
        oldList.add("王五");
        oldList.add("赵六");
        List<String> collect = oldList.stream().distinct().collect(Collectors.toList());
        System.out.println("原本的集合原素"+collect);
    }

打印结果如下:

ca947106536e4ce0a5edd6d1562108e2.png

目录
相关文章
|
2天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
9 0
|
2天前
|
开发者 Python
【亮剑】Python中`List.append()`方法不起作用的原因及解决方案
【4月更文挑战第30天】本文探讨了Python中`List.append()`方法不起作用的原因及解决方案。问题可能源于变量作用域、可变类型与不可变类型混淆、函数内的局部变量、错误的赋值操作或并发修改。解决方法包括检查变量、确保正确操作列表、使用`global`关键字、避免错误赋值和采用同步机制处理并发问题。理解这些问题对于编写健壮的Python代码至关重要。
|
2天前
|
Java API
【亮剑】三种有效的方法来删除List中的重复元素Java的List
【4月更文挑战第30天】本文介绍了三种Java中删除List重复元素的方法:1) 使用HashSet,借助其不允许重复值的特性;2) 利用Java 8 Stream API的distinct()方法;3) 对自定义对象重写equals()和hashCode()。每种方法都附带了代码示例,帮助理解和应用。
|
2天前
|
存储 Java API
java集合Collection(List)和泛型
java集合Collection(List)和泛型
|
2天前
|
算法
递归淘汰List集合头部数据,获取最终集合的起始坐标
递归淘汰List集合头部数据,获取最终集合的起始坐标
|
2天前
|
Java
list集合 使用java8同一列表获取前一条的数据放到当前对象中
list集合 使用java8同一列表获取前一条的数据放到当前对象中
|
2天前
|
存储 安全 Java
Java集合详解(List、Map、Set)
Java集合详解(List、Map、Set)
34 4
|
2天前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
2天前
|
存储 安全 Java
【JAVA基础篇教学】第八篇:Java中List详解说明
【JAVA基础篇教学】第八篇:Java中List详解说明
|
2天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap