-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractSet.java
More file actions
58 lines (51 loc) · 1.15 KB
/
AbstractSet.java
File metadata and controls
58 lines (51 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.sun.source.util;
import java.util.Objects;
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
{
protected AbstractSet() {
}
public boolean equals(Object o) {
if(o==this)
return true;
if(!(o instanceof Set))
return false;
Collection<?> c=(Collection<?>) o;
if(c.size()!=this.size())
return false;
try
{
return containsAll(c);
} catch (ClassCastException unused) {
return false;
} catch (NullPointerException unused) {
return false;
}
}
public int hashCode() {
int h=0;
Iterator<E> it=iterator();
while(it.hasNext()) {
E e=it.next();
if(e!=null)
h+=e.hashCode();
}
return h;
}
public boolean removeAll(Collection<?> c) {
Objects.requireNonNull(c);
boolean modified=false;
if(this.size()>c.size()) {
for(Iterator<?> it=this.iterator();it.hasNext();) {
modified|=remove(it.next());
}
}else {
for(Iterator<?> it=iterator();it.hasNext();) {
if(c.contains(it.next())) {
it.remove();
modified=true;
}
}
}
return modified;
}
}