HashSet源码分析(和HashMap非常类似)

HashSet与HashMap底层解析
本文深入探讨了HashSet与HashMap的内部实现原理,揭示了两者之间的密切联系。通过源码分析指出,HashSet实际上是基于HashMap实现的,其内部使用了一个空对象作为value值。

一、看下HashSet的构造方法:


private transient HashMap<E,Object> map;
 
public HashSet() {
        map = new HashMap<>();
}
由HashSet的构造方法可知:

1、当我们新建一个HashSet对象的时候,HashSet会帮我们建一个HashMap对象。


二、再看下HashSet添加元素的源码:

private static final Object PRESENT = new Object();

public boolean add(E e) {
        return map.put(e, PRESENT)==null;
}

由添加元素的源码可知:

1、HashSet添加元素其实就是添加到map里面去了。

2、当我们继续下钻源码就直接进入HashMap的源码中了。

三、总结

由以上源码分析可知,HashSet和HashMap几乎就是一个东西,底层都是key,value的形式,只是HashSet的value值都为空对象而已。



转载于:https://my.oschina.net/weiweiblog/blog/612976

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值