一篇文章搞清楚HashMap和TreeMap的内部结构( 二 )

  • 对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点 。
  • 在树的结构发生改变时(插入或者删除操作),往往会破坏上述条件3或条件4,需要通过调整使得查找树重新满足红黑树的条件 。
    一篇文章搞清楚HashMap和TreeMap的内部结构

    文章插图
     
    2、TreeMap的底层使用了红黑树来实现,像TreeMap对象中放入一个key-value 键值对时,就会生成一个Entry对象,这个对象就是红黑树的一个节点,其实这个和HashMap是一样的,一个Entry对象作为一个节点,只是这些节点存放的方式不同 。
    3、存放每一个Entry对象时都会按照key键的大小按照二叉树的规范进行存放,所以TreeMap中的数据是按照key从小到大排序的 。
     
    TreeMap总结:
    程序添加新节点时,总是从树的根节点开始比较,即将根节点当成当前节点 。如果新增节点大于当前节点并且当前节点的右节点存在,则以右节点作为当前节点,如果新增节点小于当前节点并且当前节点的左子节点存在,则以左子节点作为当前节点;
    如果新增节点等于当前节点,则用新增节点覆盖当前节点,并结束循环 直到某个节点的左右子节点不存在,将新节点添加为该节点的子节点 。如果新节点比该节点大,则添加其为右子节点 。如果新节点比该节点小,则添加其为左子节点 。
    最后欢迎大家一起交流,喜欢文章记得关注我点赞转发哟,感谢支持!




    推荐阅读