当前位置: 代码迷 >> Java相关 >> Java List的交集,并集和补集,该怎么处理
  详细解决方案

Java List的交集,并集和补集,该怎么处理

热度:108   发布时间:2016-04-22 21:22:12.0
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。
  相关解决方案