A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有一个问题搞不明白。
List集合中的removeAll()方法是怎么实现的,如果集合里面存有大量数据 removeAll()方法会不会非常低效?

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

1 个回复

倒序浏览
黑马网友  发表于 2011-9-30 00:08:15
沙发
removeAll是真正剔除所有的元素.clear()是将所有元素都变成null,但是还是有元素,赋值为空,原来的对象仍然没变,如果其它地方引用该ArrayList,概念上仍然有元素,所以可能removeAll是再数据量比较大得情况下效率很低,但是胜在彻底。API上这样写:

removeAll
boolean removeAll(Collection<?> c)从列表中移除指定 collection 中包含的所有元素(可选操作)。

指定者:
接口 Collection<E> 中的 removeAll
参数:
c - 定义将从此列表中移除哪些元素的 collection。
返回:
如果此列表随调用的结果发生改变,则返回 true。
抛出:
UnsupportedOperationException - 如果列表不支持 removeAll 方法。
ClassCastException - 如果此列表中的一个或多个元素和指定的 collection 不兼容(可选)。
NullPointerException - 如果此列表包含一个或多个 null 元素,并且指定的 collection 不支持 null 元素(可选)。
NullPointerException - 如果指定的 collection 为 null。
另请参见:
remove(Object), contains(Object)

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马