Java List的交集,并集和补集
2个List: A和B,各自的size()都是几万的级别,有什么算法可以高效地计算出它们的交集,并集和补集
以并集为例,很容易想到下面的算法:
A.removeAll(B);
A.addAll(B);
但是实验发现,removeAll和addAll效率极低,2个List都是几万的级别时,处理起来竟然要几十秒钟,自己尝试写了其他的算法,最快也得10几秒钟的处理时间,想请教大家有什么更好的算法可以快速地计算呢?也可以不用List,只要能实现对两组大数据的交集,并集和补集
[解决办法]
用linkedList来删除或插入效率较高。
并集可以将所有list中的元素放到set中,这样就可以去掉重复得到并集。
交集可循环较小的list,然后逐个判断其他list中是否包含该项元素,包含就放到一个新的list。