首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList.clear()和ArrayList.removeAll()有什么区别?

ArrayList.clear()和ArrayList.removeAll()有什么区别?
EN

Stack Overflow用户
提问于 2011-08-12 04:01:17
回答 8查看 422.9K关注 0票数 300

假设arraylist定义为ArrayList<String> arraylistarraylist.removeAll(arraylist)是否等同于arraylist.clear()

如果是这样,我可以假设clear()方法在清空数组列表方面更有效吗?

使用arraylist.removeAll(arraylist)而不是arraylist.clear()有什么注意事项吗?

EN

回答 8

Stack Overflow用户

发布于 2011-08-12 04:07:29

ArrayList.clear()算法的时间复杂度为O(n)removeAll算法的时间复杂度为O(n^2)

所以,是的,ArrayList.clear的速度要快得多。

票数 57
EN

Stack Overflow用户

发布于 2011-08-12 04:10:03

clear()方法删除单个ArrayList的所有元素。这是一个快速的操作,因为它只是将数组元素设置为null

AbstractCollection继承的removeAll(Collection)方法从调用该方法的集合中移除参数集合中的所有元素。这是一个相对较慢的操作,因为它必须搜索其中一个涉及的集合。

票数 17
EN

Stack Overflow用户

发布于 2011-08-12 04:06:31

除非有一个特定的优化来检查传递给removeAll()的参数是否是集合本身(我非常怀疑这样的优化是否存在),否则它将比简单的.clear()慢得多。

除此之外(至少同样重要):arraylist.removeAll(arraylist)只是晦涩、令人困惑的代码。这是一种非常倒退的方式,意思是“清除这个集合”。与非常容易理解的arraylist.clear()相比,它有什么优势?

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7032070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档