假设arraylist定义为arraylist <String> arraylist,那么arraylist. removeall (arraylist)是否等价于arraylist.clear()?

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

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


当前回答

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

除此之外(至少同样重要):arraylist. removeall (arraylist)只是一些笨拙的、令人困惑的代码。这是“清除这个集合”的一种非常倒退的说法。它比易于理解的arraylist.clear()有什么优势?

其他回答

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

除此之外(至少同样重要):arraylist. removeall (arraylist)只是一些笨拙的、令人困惑的代码。这是“清除这个集合”的一种非常倒退的说法。它比易于理解的arraylist.clear()有什么优势?

ArrayList.clear()的时间复杂度为O(n), removeAll的时间复杂度为O(n²)。

是的,数组列表。Clear要快得多。

Array =>一旦在运行时为Array变量分配了空间,分配的空间就不能扩展或删除。

在ArrayList中不是这样的。ArrayList可以在运行时增长和收缩。 分配的空间可以在运行时最小化或最大化。

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

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

clear()将遍历底层数组并将每个条目设置为null;

removeAll(collection)将通过ArrayList检查集合并删除(Object)它,如果它存在。

我认为clear()比removeAll快得多,因为它没有比较,等等。