AbstractCollection的removeAll方法实现的一个小疑问 为何AbstractCollection的removeAll方法不像AbstractSet的removeAll方法那样,先比较size,选择size比较小的进行iterate,iterate的时候进行删除。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我感觉可能跟是否能有重复元素有关。set没有重复元素,而Collection可以有重复元素。源码public boolean removeAll(Collection<?> c) { boolean modified = false; if (size() > c.size()) { for (Iterator<?> i = c.iterator(); i.hasNext(); ) modified |= remove(i.next()); } else { for (Iterator<?> i = iterator(); i.hasNext(); ) { if (c.contains(i.next())) { i.remove(); modified = true; } } } return modified; }public boolean removeAll(Collection<?> c) { boolean modified = false; Iterator<?> e = iterator(); while (e.hasNext()) { if (c.contains(e.next())) { e.remove(); modified = true; } } return modified; }因为是用contains来判断是否重复的,如果Collection中A.removeAll(B)的时候使用B做遍历,那么就需要a.contain(B中的某个元素),如果包含那么A就要调用A.remove(B中的元素)。如果A中有多个元素和B中的这个元素相同,而remove()一次只删除一个,就很难判断需要进行多少次remove(),可能需要写while(A.contain(B中的元素))A.remove(B中的元素)了。 因为 它的另外一个儿子 AbstractList 不愿意?? Good Question.我认为,1F是对的。Set没有重复元素,遍历少的即可。而Collection可能会有重复,因此必须遍历自己。 使用swing类可不可以一次性向容器添加多个组件 命令行运行java程序问题 XML 问题 java加密程序 求助 小程序? ******************Question******************Help me!!!!!!!!!!!!! 字符串转换为十六进制的问题 备用,博客频道关了,在此记录下(散分) 在linux下的中文问题 招java程序员!!!! 一段代码,问几个菜鸟问题,已经标注出来了。 如何在JTree中将"我的电脑"设置成根目录
源码public boolean removeAll(Collection<?> c) {
boolean modified = false; if (size() > c.size()) {
for (Iterator<?> i = c.iterator(); i.hasNext(); )
modified |= remove(i.next());
} else {
for (Iterator<?> i = iterator(); i.hasNext(); ) {
if (c.contains(i.next())) {
i.remove();
modified = true;
}
}
}
return modified;
}public boolean removeAll(Collection<?> c) {
boolean modified = false;
Iterator<?> e = iterator();
while (e.hasNext()) {
if (c.contains(e.next())) {
e.remove();
modified = true;
}
}
return modified;
}
因为是用contains来判断是否重复的,如果Collection中A.removeAll(B)的时候使用B做遍历,那么就需要a.contain(B中的某个元素),如果包含那么A就要调用A.remove(B中的元素)。如果A中有多个元素和B中的这个元素相同,而remove()一次只删除一个,就很难判断需要进行多少次remove(),可能需要写while(A.contain(B中的元素))A.remove(B中的元素)了。
我认为,1F是对的。Set没有重复元素,遍历少的即可。而Collection可能会有重复,因此必须遍历自己。