Object remove(Object key) {
int bin=key.hashCode()%table.length;
HashEntry ptr=table[bin];
- if (ptr.key==key) {
+ if (ptr.key.equals(key)) {
table[bin]=ptr.next;
numItems--;
return ptr.value;
}
while(ptr.next!=null) {
- if (ptr.next.key==key) {
+ if (ptr.next.key.equals(key)) {
Object oldvalue=ptr.value;
ptr.next=ptr.next.next;
numItems--;
int bin=key.hashCode()%table.length;
HashEntry ptr=table[bin];
while(ptr!=null) {
- if (ptr.key==key) {
+ if (ptr.key.equals(key)) {
return ptr.value;
}
}
int bin=key.hashCode()%table.length;
HashEntry ptr=table[bin];
while(ptr!=null) {
- if (ptr.key==key) {
+ if (ptr.key.equals(key)) {
return true;
}
}
int bin=key.hashCode()%table.length;
HashEntry ptr=table[bin];
while(ptr!=null) {
- if (ptr.key==key) {
+ if (ptr.key.equals(key)) {
Object oldvalue=ptr.value;
ptr.value=value;
return oldvalue;
--- /dev/null
+public class HashSet {
+ HashMap map;
+ HashSet() {
+ map=new HashMap();
+ }
+ HashSet(int initialCapacity) {
+ map=new HashMap(initialCapacity);
+ }
+ HashSet(int initialCapacity, float loadFactor) {
+ map=new HashMap(initialCapacity, loadFactor);
+ }
+ public boolean add(Object o) {
+ return (map.put(o, this)==null);
+ }
+ public boolean remove(Object o) {
+ return (map.remove(o)!=null);
+ }
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ public int size() {
+ return map.size();
+ }
+ public HashMapIterator iterator() {
+ return map.iterator(0);
+ }
+}
public String toString() {
return String.valueOf(value);
}
-
- public int hashCode() {
- return value;
- }
}
return String.valueOf(this);
}
-
public boolean equals(Object o) {
if (o==this)
return true;
readSourceFile(state, ClassLibraryPrefix+"Object.java");
readSourceFile(state, ClassLibraryPrefix+"System.java");
readSourceFile(state, ClassLibraryPrefix+"String.java");
+ readSourceFile(state, ClassLibraryPrefix+"HashSet.java");
readSourceFile(state, ClassLibraryPrefix+"HashMap.java");
readSourceFile(state, ClassLibraryPrefix+"HashMapIterator.java");
readSourceFile(state, ClassLibraryPrefix+"HashEntry.java");