HashSet底层是一个HashMap,HashSet只是用到了HashMap的key,将HashMap的值设为虚拟的值
手动实现HashSet
package cn.GTMStudio.MyConnection;
import java.util.HashMap;
public class GTMHashSet {
//HashSet的底层是一个HashMao
HashMap map;
//创建为HashMap的值关联的虚拟对象
private static final Object PRESENT = new Object();
public GTMHashSet() {
map = new HashMap();
}
public int size() {
return map.size();
}
public void add(Object o) {
map.put(o, PRESENT);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (Object key : map.keySet()) {
sb.append(key+",");
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
public static void main(String[] args) {
GTMHashSet set = new GTMHashSet();
set.add("aaa");
set.add("bbb");
set.add("ccc");
System.out.println(set);
}
}
总结
HashSet实质上是特殊的HashMap,掌握了HashMap的底层原理就可以轻松掌握HashSet了。