上期: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) {

本文是《Java面试重点--HashSet底层代码全面解析》系列的第二篇,详细剖析了HashSet添加元素的过程,包括如何处理重复元素和null值。通过debug分析,解释了HashSet不允许重复元素的原因,并揭示了其内部数据结构和哈希算法的工作方式,指出HashSet中元素的添加顺序与取出顺序可能不一致。
最低0.47元/天 解锁文章
3290

被折叠的 条评论
为什么被折叠?



