hashSet的说明

  1. hashSet 的底层其实就是hashMap。
  2. hashMap的数据结构是 : 数组 ->链表->红黑树(avl树)平衡二叉树。
  3. 添加一个元素时,先会得到hash值,但是,他得到的hash值不会直接使用,他会处理下,处理格式就是 hash值 >>>16 他的hash值无符号右移十六位。 再转成 数组的索引值
  4. 找到存储数据表table,看这个索引的位置是否已经存放有元素,如果没有直接加入在数组中
  5. 如果有,就调用equals方法比较,具体equals方法,是看程序猿如何去定义了,有没有重写equals方法,如果相同就放弃添加。如果不同,就添加到最后。
  6. 在java8中,如果一条链表元素个数到底了 8个的时候,并且table的大小(数组)的大小到达64,就会转成红黑树。
    更多的在:https://blog.csdn.net/vking_wang/article/details/14166593
上一篇:HashSet源码分析(JDK1.8)


下一篇:纯CSS Material Design风格按钮