Set

Set(集合)

Set中的对象不按特定(HashCode)的方式排序,并且没有重复对象,主要两个实现类:

  1. HashSet:HashSet按照哈希算法来存取集合中的对象,存取速度快,当HashSet中的元素个数超过数组大小*loadFactor(默认值为0.75)时,就会进行近似两倍扩容
  2. TreeSet:实现类SortedSet接口,能够对集合中的对象进行排序

HashSet实现原理

  1. HashSet是基于HashMap实现的,默认构造函数是构建一个厨师容量为16,负载因子为0.75的HashMap,封装了一个HashMap对象来存储所有的集合元素,所有放入HashSet中的集合元素实际上由HashMap的key来保存,HashMap的value则存储了一个PRESENT,他是一个静态的Object对象。
  2. 当我们试图把某个类的对象当成HashMap的key,或试图将这个类的对象放入HashSet中保存时,重写该类的equals()方法和HashCode()方法很重要,而且这两个方法的返回值必须保持一致:当该类的两个HashCode()返回值相同时,他们通过equals()方法比较也应该返回true。所有参与计算hashCode()返回值的关键属性,都应该用于作为equals()比较的标准
  3. HashSet的其他操作都是基于HashMap的。

posted on 2020-05-14 18:10  Wang丶  阅读(178)  评论(0)    收藏  举报

导航