hashmap 线程不安全,可以存入null,key不可重复(怎么实现不可重复呢?),values可以重复, 实现的时在数组中用key值通过hashcode来存一位置,如果key值相同就通过链表把其连接起来,如果长度大于8的时候就是用红黑树 常用方法,keySet,EntrySet,values,p ...
分类:
其他好文 时间:
2019-08-02 20:01:21
阅读次数:
101
探究HashMap的链表转红黑树的具体时机之HashMap的源码解析。 ...
分类:
其他好文 时间:
2019-08-01 14:44:29
阅读次数:
93
二叉查找树 要想了解二叉查找树,我们首先看下二叉查找树有哪些特性呢? 1, 左子树上所有的节点的值均小于或等于他的根节点的值 2, 右子数上所有的节点的值均大于或等于他的根节点的值 3, 左右子树也一定分别为二叉排序树 我们来看下图的这棵树,他就是典型的二叉查找树 那问题来了,为什么一定要这种结构呢 ...
分类:
其他好文 时间:
2019-08-01 14:29:59
阅读次数:
63
一.学习红黑树前的准备: 熟悉基础数据结构 了解二叉树概念 二.红黑树的规则和规则分析: 根节点是黑色的 所有叶子节点(Null)是黑色的,一般会认定节点下空节点全部为黑色 如果节点为红色,那么子节点全部为黑色 从某一节点出发,到达叶子节点的所有分支上,黑色节点的数量相同 由规则4引出的一个定义,从 ...
分类:
其他好文 时间:
2019-07-31 16:42:36
阅读次数:
77
treeset 底层用treemap实现,实现了sortedset接口。红黑树实现,不允许重复。可以自然和定制排序。 用到的例子: 1,ijkplayer中treeset存入mp4,flv。判断后缀。 总结: 1、不能有重复的元素; 2、具有排序功能; 3、TreeSet中的元素必须实现Compar ...
分类:
其他好文 时间:
2019-07-31 01:06:19
阅读次数:
185
HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却不是确定的,HashMap最多只允许一条记录的键为null,允许多条记录的值为null,HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一 ...
分类:
编程语言 时间:
2019-07-30 23:26:17
阅读次数:
183
前言部分 splay是个什么东西呢? 它就是个平衡树,支持以下操作 这些操作还可以用treap,替罪羊树,红黑树,multiset balabala(好像混进去什么奇怪的东西) 这里就只说一下splay(其他的窝不会)(splay窝也不会) 先来几个变量和一些辅助函数: root:当前平衡树的根是那 ...
分类:
其他好文 时间:
2019-07-23 11:35:31
阅读次数:
125
一.TreeMap概述TreeMap存储K-V键值对,通过红黑树(R-Btree)实现;TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;TreeMa
分类:
其他好文 时间:
2019-07-21 20:05:08
阅读次数:
93
jdk1.8之前是数组+链表的形式,后面会介绍jdk1.8对hashMap的改动:数组+链表+红黑树 红黑树是O(logn),链表是O(n),大于等于7就转成红黑树,小于7时候O(longn)要大。 我们知道java.util.HashMap不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改 ...
分类:
其他好文 时间:
2019-07-21 13:42:15
阅读次数:
80
负载因子,控制数组的使用率。 TREEIFY_THRESHOLD变红黑树上限 UNTREEIFY_THRESHOLD拆树 size计数器,当计数器大于threshold时,紧要进行扩容操作。 threshold = floatFactor*DEFAULT_INITIAL_CAPACITY (0.75 ...
分类:
其他好文 时间:
2019-07-17 00:43:44
阅读次数:
91