先上一张从网上找到的图片,这张图片概括了集合框架的结构。
上篇文章,对比说明了HashMap的实现以及在7和8两个版本中的区别,下面我们继续看下JDK8中HashSet的实现。
HashSet拥有两个成员变量
private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
其中的map就是HashSet的内部数据结构,所以说HashSet其实就是HashMap是实现的,另外的一个final的Object对象,是我们用来填充map的Value的,而Set中真正的数据,都放在了HashMap的K中。
看下构造方法:
public HashSet() {
map = new HashMap<>();
}
public boo