概览: 内部存储的数据结构为:数组+链表+红黑树,图示: 重要的属性(内部类): 方法分析 写在最后: 为什么使用红黑树? 红黑树的特性: 1、节点是红色或者黑色 2、根是黑色 3、所有叶子都是黑色 4、每个红色节点必须有2个黑色的子节点 5、从任一节点到其每个叶子的所有简单路径包含相同数目的黑色节 ...
分类:
其他好文 时间:
2017-03-16 19:14:48
阅读次数:
264
之前hashmap处理冲突单纯使用链表法进行链接,1.8中,当一散列值中对应的链表长度超过8个后,会将链表转化为红黑树进行存储。 1.8中源码 1.7源码 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean e ...
分类:
其他好文 时间:
2017-03-14 15:46:17
阅读次数:
225
HashMap详解 HashMap 注:由于HashMap的实现机制过于复杂,内部由哈希数组+链表+红黑树实现,并且其中涉及到Hash算法、哈希数组扩容机制、负载因子、红黑树等等一系列较为复杂的问题,具体可以去看美团网技术团队的关于HashMap的文章。在我自己实现的HashMap中,我把许多东西难 ...
分类:
其他好文 时间:
2017-03-02 21:23:18
阅读次数:
293
平衡树和非平衡树 如果待插入的关键字是升序的或者降序的,将会产生非平衡树。(都只在根节点的左边或者右边) 当树没有分支时,此时的树就可以看做单链表。 ...
分类:
编程语言 时间:
2017-02-24 15:28:02
阅读次数:
186
关于红黑树和AVL树,来自网络: 1 好处 及 用途 红黑树 并不追求“完全平衡 ”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。 红黑树能够以 O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的 ...
分类:
其他好文 时间:
2017-02-17 23:11:47
阅读次数:
627
版权声明:本文为博主原创文章,未经博主允许不得转载。技术博客 http://blog.csdn.net/stecdeng 技术交流群 群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流 版权声明:本文为博主原创文章,未经博主允许不得转载。技术博客 http:/ ...
分类:
编程语言 时间:
2017-02-16 13:54:03
阅读次数:
302
学习算法 还是建议看看算法导论 算法导论第三版 如果不看数学推导 仅看伪代码 难度还是适中 本系列只是记录我的学习心得 和伪代码转化代码的过程 深入学习 还是建议大家看看算法书籍 教程更加系统。 本文参考算法导论第13章节 红黑树 代码由本人写成 转载请标明出处 红黑树是一个带颜色的二叉树 有以下5 ...
分类:
编程语言 时间:
2017-02-13 21:30:46
阅读次数:
267
由于红黑树的删除用到了二叉树的一些函数 所以我们从二叉树讲起 二叉树 不带颜色的红黑树 看看两张画的有点丑的图 如图 一个节点 记录一个数值 同时还有两个指向该节点两个儿子的标识 儿子有两个 左儿子和右儿子 图中就有两个二叉树示例 一个仅有右儿子 一个左右儿子均有 C语言中或者C++语言中我们这样定 ...
分类:
编程语言 时间:
2017-02-13 15:21:55
阅读次数:
237
epoll的红黑树由一个互斥量保护,ready list是自旋锁保护的。 ready list涉及到add\mod\wait 红黑树涉及到add\mod\del 每一个epoll对象都有一个独立的eventpoll结构体,用于存放通过epoll_ctl方法向epoll对象中添加进来的事件。这些事件都 ...
分类:
其他好文 时间:
2017-02-13 12:28:32
阅读次数:
157