假设arraylist定义为ArrayList<String> arraylist,arraylist.removeAll(arraylist)是否等同于arraylist.clear()
如果是这样,我可以假设clear()方法在清空数组列表方面更有效吗?
使用arraylist.removeAll(arraylist)而不是arraylist.clear()有什么注意事项吗?
发布于 2011-08-12 04:07:29
ArrayList.clear()算法的时间复杂度为O(n),removeAll算法的时间复杂度为O(n^2)。
所以,是的,ArrayList.clear的速度要快得多。
发布于 2011-08-12 04:10:03
clear()方法删除单个ArrayList的所有元素。这是一个快速的操作,因为它只是将数组元素设置为null。
从AbstractCollection继承的removeAll(Collection)方法从调用该方法的集合中移除参数集合中的所有元素。这是一个相对较慢的操作,因为它必须搜索其中一个涉及的集合。
发布于 2011-08-12 04:06:31
除非有一个特定的优化来检查传递给removeAll()的参数是否是集合本身(我非常怀疑这样的优化是否存在),否则它将比简单的.clear()慢得多。
除此之外(至少同样重要):arraylist.removeAll(arraylist)只是晦涩、令人困惑的代码。这是一种非常倒退的方式,意思是“清除这个集合”。与非常容易理解的arraylist.clear()相比,它有什么优势?
https://stackoverflow.com/questions/7032070
复制相似问题