
数据结构
尤教授
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashMap源码解析
参考文章:Java 8系列之重新认识HashMapHashMap根据key的hashcode值存储数据,大多数情况下可以直接定位到值,因而具有很快的访问速度,但遍历顺讯确实不确定的。HashMap最多允许一条记录的key为null,允许多条记录的value为null。同时HashMap是非线程安全的,即任一时刻可以有多个线程同时写HashMap,可能会导致数据不一致。从结构上讲,HashMap是数...原创 2017-10-24 10:24:08 · 304 阅读 · 0 评论 -
二叉树前序、中序、后序遍历相互求法
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。总结一下三种遍历方式的特征: 前序:开头是头结点 中序:根据头结点划分左右子树的元素 后序:末尾是头结点首先,我们看看前序、中序、后序遍历的特性:前序遍历:1.访问根节点 2.前序原创 2018-01-31 15:35:12 · 80165 阅读 · 12 评论 -
Java集合框架总结
1.集合框架图2.概念说明1)所有的集合都位于java.util包下,java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List。 Map实现类用于保存原创 2018-02-04 15:08:10 · 226 阅读 · 0 评论 -
LinkedHashMap的源码分析
参考文章:【Java集合源码剖析】LinkedHashmap源码剖析LinkedHashMap概述LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,同样允许key和value为null,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相原创 2017-12-04 13:37:29 · 208 阅读 · 0 评论 -
二叉树的广度优先遍历BFS和深度优先遍历DFS
1.广度优先遍历英文缩写为BFS即Breadth FirstSearch。其过程检验来说是对每一层节点依次访问,访问完一层进入下一层,而且每个节点只能访问一次。对于上面的例子来说,广度优先遍历的 结果是:A,B,C,D,E,F,G,H,I(假设每层节点从左到右访问)。先往队列中插入左节点,再插右节点,这样出队就是先左节点后右节点了。 广度优先遍历树,需要用到队列(Queue)来存储节点对...原创 2019-06-03 14:13:01 · 841 阅读 · 0 评论 -
红黑树的Java实现
1.红黑树的定义红黑树(Red-Black Tree,简称RB树),是一种特殊的二叉查找树,所以他也满足二叉查找树的特征:任意一个节点的值大于右子节点的键值,小于左子节点的键值。除此之外,红黑树还具备很多其他特征:1)每个节点都是红色或者黑色2)根节点必定为黑色3)每个叶节点(左右子节点都为null的节点)必定是黑色4)如果一个节点是红色的,他的子节点必须是黑色的(反之则不一定),也就是...原创 2019-06-12 11:44:53 · 235 阅读 · 0 评论 -
深入理解ConcurrentHashMap源码
Java7中的 ConcurrentHashMapconcurrencyLevel:并行级别、并发数、Segment数,默认为16,也就是说ConcurrentHashMap有16个Segment,此时,理论上来说最多可以同时支持16个线程并发写,只要他们的操作分别分布在不同的Segment上。这个值可以在初始化的时候设置为其他值,但是一旦初始化后,他是不可以扩容的。具体到每个Segment...原创 2019-08-07 17:19:53 · 387 阅读 · 0 评论