在JDK1.8之前,哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。 但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,哈 希表存储采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找 时间。
简单的来说,哈希表是由数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,如下图所示。

红黑树的底层是链表

image.png

超过8个元素就会转化成红黑树

image.png

根据自己的需求决定hashcode和equals方法

image.png

可变参数

(其实是数组) 多个参数(类型一样)可以一起传入也可以不传参数

只能放在最后

只能有一个可变参数

image.png
image.png