JDK1.8中的HashMap数据结构使用了数组+链表+红黑树,数组和链表结构和JDK1.7中的基本一致,红黑树是一个新增的方式,具体实现类是内部类TreeMap。
这是为了为了解决hash碰撞严重导致链表过长后查询占据较低的缺陷引进的。
想深入了解红黑树,需要对树、二叉树23树、234树有一定的认识,HashMap信你得红黑树是234树的一种具体实现,红黑树就是一个能维持相对平衡的二叉树,使用红黑两种颜色来划分节点,红黑树存在如下约束条件:
- 根节点必须为黑色
- 其余节点要嘛是红色要嘛是黑色
- 最底层的叶子结点为null,是黑色
- 父子节点不能同时为黑色
- 从任何一个叶子结点到根节点路径上的黑节点数量一致
网友评论