Hash Set的集合概述和特点
1. 底层数据结构是哈希表
2. 不能保证存储和取出顺序完全一致
3. 没有带索引的方法,不能使用普通for循环
4. 由于继承set 所以元素是唯一的
哈希值
哈希值是JDK根据对象地址或者属性值,算出来的int类型的整数。
object中有一个方式可以获取对象的哈希值
public int hashCode(); 根据对象的地址值计算出来的哈希值。
如果没有重写这个方法,则是根据对象的地址值生成的哈希值(同一个对象调用两次的话,哈希值是一样的)。
如果重写了这个方法,则是根据对象的属性值来计算的,(如果不同对象的属性值是一样的,那么得到的哈希值也是一样的)。
哈希表
JDK8之前,底层采用数组+链表的形式体现。
JDK8之后,底层由数组+链表+红黑树实现。