HashSet的底层是HashMap因此模拟实现只需要对HashMap进行简单的封装就可以了。
模拟实现HashSet:
package mycollection;
import java.util.HashMap;
public class sHashSet {
HashMap map;
private static final Object PRESENT_OBJECT = null;
public sHashSet() {
map = new HashMap();
}
public int size() {
return map.size();
}
public void add(Object key) {
map.put(key, PRESENT_OBJECT);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("{");
for(Object keyObject : map.keySet()) {
sb.append(keyObject+",");
}sb.setCharAt(sb.length() - 1, '}');
// return map.toString(); //以上是手动toString,也可以调用map的toString,但可能不符合预期
return sb.toString();
}
public static void main(String[] args) {
sHashSet shs = new sHashSet();
shs.add("aaa");
shs.add("bbb");
shs.add("ccc");
System.out.println(shs);
}
}