Set
Set(集合)
Set中的对象不按特定(HashCode)的方式排序,并且没有重复对象,主要两个实现类:
- HashSet:HashSet按照哈希算法来存取集合中的对象,存取速度快,当HashSet中的元素个数超过数组大小*loadFactor(默认值为0.75)时,就会进行近似两倍扩容
- TreeSet:实现类SortedSet接口,能够对集合中的对象进行排序
HashSet实现原理
- HashSet是基于HashMap实现的,默认构造函数是构建一个厨师容量为16,负载因子为0.75的HashMap,封装了一个HashMap对象来存储所有的集合元素,所有放入HashSet中的集合元素实际上由HashMap的key来保存,HashMap的value则存储了一个PRESENT,他是一个静态的Object对象。
- 当我们试图把某个类的对象当成HashMap的key,或试图将这个类的对象放入HashSet中保存时,重写该类的equals()方法和HashCode()方法很重要,而且这两个方法的返回值必须保持一致:当该类的两个HashCode()返回值相同时,他们通过equals()方法比较也应该返回true。所有参与计算hashCode()返回值的关键属性,都应该用于作为equals()比较的标准
- HashSet的其他操作都是基于HashMap的。
学习笔记
浙公网安备 33010602011771号