加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

3分钟让你明白:HashMap之红黑树树化过程

发布时间:2019-10-14 19:16:22 所属栏目:建站 来源:追逐仰望星空
导读:副标题#e# 01 概述 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文主要分析一下HashMap中红黑树树化的

看代码之前我们先了解一下TreeNode

  1. static final class TreeNode<K, V> extends LinkedHashMap.Entry<K, V> 
  2.  { 
  3.  TreeNode<K, V> parent; // red-black tree links 
  4.  TreeNode<K, V> left; 
  5.  TreeNode<K, V> right; 
  6.  TreeNode<K, V> prev; // needed to unlink next upon deletion 
  7.  boolean red; 
  8.  TreeNode(int hash, K key, V val, Node<K, V> next) 
  9.  { 
  10.  super(hash, key, val, next); 
  11.  } 
  12.   
  13.  final void treeify(Node<K,V>[] tab) 
  14.  { 
  15.  // ...... 
  16.  } 
  17.   
  18.  static <K,V> TreeNode<K,V> balanceInsertion(TreeNode<K,V> root, TreeNode<K,V> x) 
  19.  { 
  20.  // ...... 
  21.  } 
  22.   
  23.  static <K,V> TreeNode<K,V> rotateLeft(TreeNode<K,V> root, TreeNode<K,V> p) 
  24.  { 
  25.  // ...... 
  26.  } 
  27.   
  28.  static <K,V> TreeNode<K,V> rotateRight(TreeNode<K,V> root, TreeNode<K,V> p) 
  29.  { 
  30.  // ...... 
  31.  } 
  32.   
  33.  // ......其余方法省略 
  34.  } 

可以看出出真正的维护红黑树结构的方法并没有在HashMap中,全部都在TreeNode类内部。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读