所有繼承了這個抽象set的類的hashCode計算方法:
是對set中每個元素的hashcode值進行累加
public int hashCode() {
int h = 0;
Iterator<E> i = iterator();
while (i.hasNext()) {
E obj = i.next();
if (obj != null)
h += obj.hashCode();
}
return h;
}
如果當前的set大小大於傳入進來的set,那麼用傳進來的參數作為遍曆因子在當前set中移除
否則以當前set的大小作為遍曆因子去做移除操作
也就是說,誰的大小比較小,就以誰為遍曆因子去另一個set中移除操作
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;
}