调试JDK源码-调试JDK源码-Hashtable实现原理以及线程安全的原因
代码
Set<String> s=new HashSet<String>();
s.add("http://blog.csdn.net/unix21");
s.add("ABCDEF");
s.add("123456");
hashSet是基于hashMap的
add方法
进入hashMap类的put方法,后面的参考前文即可
下一步完成插入
下一步
由于HashSet其实只要key没用value,那么在hashMap中的Value是什么呢?
所以看出3次都是同一个Object,这个是预定义的
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
{
static final long serialVersionUID = -5024744406713321676L;
private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
addall方法