一个菜鸟的源码之路

1.new初始化
看new函数,发现hashset底层实际是hashmap,初始化一个hashset,实际就是初始化了一个hashmap

2.add添加元素
添加一个元素实际就是在hashmap中插入一个值

来看下
PRESENT
,每次插入的key就是你要保存的值,而value都是指向一个新建的对象,由于这个新建对象是private static final
,所以PRESENT都是同一个。主要是利用hashmap的key唯一性来保证hashSet的唯一性
3.size求大小
通过调用hashmap的接口来实现

由此可见,hashSet原理就是hashMap。hashMap会在接下来讲解到。
网友评论