大数据量时取两个List的交集和并集
发布网友
发布时间:2022-11-08 23:12
我来回答
共1个回答
热心网友
时间:2023-11-14 03:40
对于list1和list2,需要求这两个list的交集和并集操作
我们知道list本身自带了retainAll来实现 list1.retainAll(list2)
这种方式在list都比较小的情况下还是可以接受的,但是在大数据量时,这种就速度比较慢了,40万数据量大概需要10分钟,所以需要考虑另外一种方式去处理
在jdk1.8中,有一种方式是通过stream流的处理把list转换成map,再对map进行处理,我们知道,map的底层都是数组加链表的形式来实现的,通常情况下,它的查找效率和写入效率都是O(1)的
map = list.stream().collect(Collectors.toMap((key值)bean::getOrderNo, (这块存value值)bean -> bean))
然后再对map进行处理,有一个需要注意的就是转换的时候需要保证list中的值必须非空,并且没有重复数据