上期:Java面试重点–HashSet底层代码全面解析(1)
上期的例子:
import java.util.HashSet;
public class HashSet_ {
public static void main(String[] args) {
HashSet hashSet = new HashSet();
hashSet.add("jack");
hashSet.add("tom");
hashSet.add("jack");
hashSet.add(null);
hashSet.add(null);
System.out.println(hashSet);
}
}
加入"tom"的过程与"jack"相同,所以跳过,继续加入"jack"。
解析HashSet的底层机制
1、使用Debug进入第三句add:hashSet.add(“jack”);我们得到了下面的代码:
e就是传入的字符串"jack",PRESENT是一个常量。
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
2、进入put方法:
key就是传入的字符串"jack",value就是PRESENT是一个常量。
public V put(K key, V value) {