参考了几篇网上的文章,自己测试了一下效率,最后选取如下方法:
public <T> List<T> removeAll(List<T> source, List<T> dest) {
List<T> result = new LinkedList<>();
Set<T> destinationSet = new HashSet<>(dest);
for(T t : source) {
if (!destinationSet.contains(t)) {
result.add(t);
}
}
return result;
}
下面贴一下list.removeAll和上面方法的效率对比:
list.removeAll 一万个元素耗时:221ms 优化方法一万个元素耗时4ms