HashSet 的实现原理?
首先,我们知道它是Set的一个实现,所以保证了当中没有重复的元素。
一方面Set中最重要的一个操作就是查找。而且通常我们会选择HashSet使用的是散列函数,
那么它当中的元素也就无需可寻,当中是允许元素为Null的。
1、它是基于HashMap实现的,默认构造函数是构建一个初始容量为16,负载因子为0.75的HashMap。封装了一个HashMap对象
来存储所有的集合元素,所有放入HashSet中的集合元素实际上由HashMap的key来保存,而HashMap的value则存储了
一个PRESENT,他是一个静态的Object对象。
2、当我们试图把某个类的对象当成HashMap的key,或试图将这个类的对象放入HashSet中保存时,重写该类的
equals方法与hashCode方法,而且这两个方法的返回值必须是一致的,当该类的两个hashCode返回值相同时,他们通过
equals1方法比较也应该返回true,通常来说,所有参与计算hashCode返回值的关键属性,都应该作为equals比较的标准。
3、HashSet的其他操作都是基于HashMap的。
