1.map的底层实现是红黑树,所以保证了一个稳定的动态操作时间,查询、插入、删除都是O(logN),最坏和平均都是查询效率为O(logN);unordered_map底层的实现是哈希表,查询效率为O(1),虽然是O(1),但是并不是unordered_map查询时间一定比map短,因为实际情况中还要 ...
分类:
其他好文 时间:
2019-06-23 21:01:54
阅读次数:
81
前面前已经说明了HashMap以及红黑树的一些基本知识,对JDK8的HashMap也有了一定的了解,本篇就开始看看并发包下的ConcurrentHashMap,说实话,还是比较复杂的,笔者在这里也不会过多深入,源码层次上了解一些主要流程即可,清楚多线程环境下整个Map的运作过程就算是很大进步了,更细... ...
分类:
其他好文 时间:
2019-06-23 17:29:37
阅读次数:
77
一 存储结构 二 put操作 put(key,value)内部调用的是putVal() 下面是源码 jdk1.8采用的是尾插法 代码除了红黑树的部分引出两个部分:1. 为什么采取hash & 长度-1 的方式找数组位置 2. 如何扩容 三 初始化和扩容 定容量的方法: 对于构造函数中传入的整数,进行 ...
分类:
编程语言 时间:
2019-06-23 14:02:38
阅读次数:
109
/** From CLR */ private void fixAfterInsertion(Entry x) { x.color = RED; while (x != null && x != root && x.parent.color == RED) {//当前插入节点的父节点是 当前节点祖先... ...
分类:
编程语言 时间:
2019-06-23 11:34:18
阅读次数:
95
数据结构部分,复习栈,队列,数组,链表和红黑树,参考博客和资料学习后记录到这里方便以后查看,感谢被引用的博主。 栈 栈(stack)又称为堆栈,是线性表,它只能从栈顶进入和取出元素,有先进后出,后进先出(LIFO, last in first out)的原则,并且不允许在除了栈顶以外任何位置进行添加 ...
分类:
编程语言 时间:
2019-06-21 09:16:30
阅读次数:
116
目录 什么是java集合框架 使用类型安全的容器 集合框架简图 集合类库主要接口简述 Collection接口方法概览 目录 什么是java集合框架 使用类型安全的容器 集合框架简图 集合类库主要接口简述 Collection接口方法概览 目录 什么是java集合框架 使用类型安全的容器 集合框架简 ...
分类:
编程语言 时间:
2019-06-18 23:03:13
阅读次数:
295
#include "iostream" using namespace std; class Node { public: int data; bool red; Node *parent = NULL; Node *lchild = NULL; Node *rchild = NULL; Node(... ...
分类:
编程语言 时间:
2019-06-14 01:00:35
阅读次数:
113
3.5 红黑树 3.5.1 树形化操作 3.5.1.1 操作描述 参照源码 3.5.1.2 源码解析 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { / ...
分类:
编程语言 时间:
2019-06-11 19:01:26
阅读次数:
125
一、前言 在分析jdk1.8后的HashMap源码时,发现网上好多分析都是基于之前的jdk,而Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。 ...
分类:
其他好文 时间:
2019-06-09 00:38:23
阅读次数:
99