0
点赞
收藏
分享

微信扫一扫

Java 去除List中重复的数据,只留唯一的数据

白衣蓝剑冰魄 2022-01-10 阅读 192

Java 去除List中重复的数据,只留唯一的数据

文章目录

通过HashSet去除List中的重复数据,只保留唯一的数据

比如: 集合[1, 2, 3, 1, 2, 3, 4, 5] 只保留其中唯一的集合[4, 5]

直接上代码

		//生成范围为1-9999的随机数字 100000个
        List<Integer> list = new Random()
                .ints(100000, 1, 10000)
                .boxed()
                .collect(Collectors.toList());

        //用于存放集合中有的数据
        Set<Integer> contents = new HashSet<>();
        //用于存放集合中重复的数据
        Set<Integer> exclude = new HashSet<>();

        //遍历集合中的元素
        for (Integer integer : list) {
            //依次添加到contents中 返回是否添加成功
            if (!contents.add(integer)){
                //因为Set中的元素是唯一的 如果添加失败则说明数据重复了 则添加到exclude中
                exclude.add(integer);
            }
        }

        //遍历exclude中的元素
        for (Integer integer : exclude) {
            //把exclude中的元素依次冲contents中删除
            contents.remove(integer);
        }

        //定义一个新集合 把删除后的数据添加回一个新的List中
        List<Integer> result = new ArrayList<>();
        list.addAll(contents);

思路

1.把List1中的各个元素依次存入Set1中
2.Set中的元素是唯一的,add()方法返回的是否添加成功,如果返回false说明元素已存在
3.把添加失败的元素(重复的元素)放入Set2中
4.遍历Set2中的元素,并依次冲Set1中删除
5.重新定义个List2,把过滤后的Set添加到List2

结果

随机100000个范围为1-9999的数字
去除其中重复的数据
通过 System.currentTimeMillis() 计算代码运行时间
平均结果为 20ms 左右

举报

相关推荐

0 条评论