
jdk源码分析(集合源码)
jdk源码分析(集合源码)
givmchickenblood
try to like it,do it
展开
-
JDK 1.8 LinkedList源码分析
LinkedList是一个实现了List接口和Deque接口的双端链表。有关索引的操作可能从链表头开始遍历到链表尾部,也可能从尾部遍历到链表头部,这取决于看索引更靠近哪一端。 LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以使用如下方式: List list=Collections.synchronizedList(new LinkedList(......原创 2018-06-26 19:55:15 · 139 阅读 · 0 评论 -
关于 =null 和 clear() 问题(Java性能篇)
https://blog.csdn.net/u012406177/article/details/702449201 list = nulllist = null: 就是释放这个数组对象,当然里面所引用的对象也就释放了。2 list.clear()list.clear(): 是把list里面对象遍历赋值为null,意思就是释放list里面所有对象,但是list对象没释放内存哦。clear...转载 2019-05-16 11:13:59 · 1002 阅读 · 0 评论 -
HashMap为什么线程不安全
HashMap的线程安全问题体现在以下3个方面:1、线程1调用contains()返回true,然后调用get(),同时线程2调用remove()2、2个线程执行put操作: 线程1put()时,记录了头结点为node1,这时时间片用完,线程2put(),且把数据插在了链表的头部,完成put操作。线程1接着完成put()剩余的操作,这时新的头结点已经变了,但是线程1记录的旧的头结点,把数据插入...原创 2019-05-06 22:00:28 · 343 阅读 · 0 评论 -
为什么Hashtable, ConcurrentHashMap 的 key和value 不能为null(并发角度分析)
ConcurrentHashmap和Hashtable都是支持并发的,二者规定key,value均不能为null,null的话,会抛出空指针异常。为什么要这么设计?当通过get(k)获取对应的value时,如果获取到的是null时,无法判断,它是put(k,v)的时候value为null,还是这个key从来没有做过映射。假如线程1调用m.contains(key)返回true,然后在调用m.g...原创 2019-05-06 21:59:19 · 7630 阅读 · 9 评论 -
TreeSet的实现原理
https://www.cnblogs.com/pony1223/p/7907173.html前一篇我们分析了TreeMap,接下来我们分析TreeSet。HashSet的详细实现是通过封装了一个HashMap的成员变量来实现的,TreeSet也不例外。我们先看部分代码,里面声明了成员变量:private transient NavigableMap<E,Object> m; ...转载 2019-05-06 16:53:00 · 5227 阅读 · 1 评论 -
TreeMap的实现原理(红黑树的增删操作)
转自https://my.oschina.net/90888/blog/16260651、概述文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明。TreeMap实现了SortedMap接口,它是有序的集合。而且是一个红黑树结构,每个key-value都作为一个红黑树的节点。...转载 2019-05-06 16:16:56 · 641 阅读 · 0 评论 -
HashSet的实现原理
https://www.jianshu.com/p/6cab0fae24031、HashSet简述HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个private static final Object PRESENT = new Object();。HashSet跟Ha...转载 2019-05-06 10:19:43 · 1815 阅读 · 0 评论 -
2-3树的演变 红黑树---红黑的含义
转载:超级棒的2-3树,之后再引入红黑树,很清楚的理解了红黑树的性质https://blog.csdn.net/chen_zhang_yu/article/details/52415077前言红黑树,对不少人来说是个比较头疼的名字,在网上搜资料也很少有讲清楚其演变来源的,多数一上来就给你来五条定义,红啊黑啊与根节点距离相等之类的,然后就开始进行旋转、插入、删除这些操作。一通操作下来,连红色和...转载 2019-03-16 10:31:21 · 216 阅读 · 0 评论 -
解决hash冲突的三个方法
https://www.cnblogs.com/wuchaodzxx/p/7396599.htmlhttps://www.cnblogs.com/zhangbing12304/p/7997980.html通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希表...转载 2019-03-17 16:13:46 · 290 阅读 · 0 评论 -
ConcurrentHashMap原理分析(1.7与1.8)put 和 get
https://www.cnblogs.com/aspirant/p/8623864.htmlConcurrentHashMap 与HashMap和Hashtable 最大的不同在于:put和 get 两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达Segment里面的Entry,然后在遍历entry链表(1) 从1.7到1.8版本,由于HashEntry...转载 2019-04-01 13:50:20 · 1867 阅读 · 2 评论 -
【不做标题党,只做纯干货】HashMap在jdk1.7和1.8中的实现
https://www.cnblogs.com/heyonggang/p/9899908.html写的很完美转载 2019-03-23 19:08:07 · 118 阅读 · 0 评论 -
ArrayList和LinkedList的区别以及优缺点
https://blog.csdn.net/qq_32679815/article/details/78907437ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。对于ArrayList,它在集合的末尾删除或添加元素所用的时间是一致的,但是在列表中间的部分添加或删除时所用时间就会大大增加。但是它在根据索引查找...转载 2019-03-15 09:46:49 · 157 阅读 · 0 评论 -
浅谈ArrayList动态扩容~~
https://blog.csdn.net/zymx14/article/details/78324464转载 2019-03-10 20:39:25 · 207 阅读 · 0 评论 -
JDK 1.8 ArrayList源码分析
转自 https://www.cnblogs.com/zhangyinhua/p/7687377.html 超级详细 https://blog.csdn.net/caoxiaohong1005/article/details/795734051.特点总结:可存储元素null调用无参构造器创建实例,默认容量capacity=10自动扩容倍数:1.5和Vector类等价,区别是 Ar...转载 2018-06-25 23:13:32 · 175 阅读 · 0 评论 -
什么是 SDK
转自https://blog.csdn.net/snowin1994/article/details/80608079https://blog.csdn.net/hx_uestc/article/details/72206251、SDK (Software Development Kit,软件开发工具包)举个例子:在这里,一个简单的功能链条我将它分为三个组成部分:1、客户端组装数据2...转载 2019-07-20 14:34:12 · 11655 阅读 · 0 评论