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 左右