大数据量时取两个List的交集和并集

对于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中的值必须非空,并且没有重复数据

你可能感兴趣的:(大数据量时取两个List的交集和并集)