[专栏]Java普通集合源码剖析
pfnie
这个作者很懒,什么都没留下…
展开
-
Java HashMap工作原理及实现(一)
目录1. 概述2. 两个重要的参数3. put函数的实现4. get函数的实现5. hash函数的实现6. resize的实现7. 总结参考资料1. 概述从本文你可以学习到:什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗?equals()和hashCode()的都有什么作用?你知转载 2016-05-09 13:56:30 · 627 阅读 · 0 评论 -
Java EnumMap工作原理及实现(二)
1.概述A specialized Map implementation for use with enum type keys. All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is cr转载 2016-05-17 13:24:50 · 440 阅读 · 0 评论 -
Java EnumMap工作原理及实现(一)
目录(?)[+]EnumMap定义EnumMap使用EnumMap用途总结EnumMap定义package java.util;import java.util.Map.Entry;import sun.misc.SharedSecrets;public class EnumMap, V> extends AbstractMap implements转载 2016-05-17 13:14:53 · 2059 阅读 · 0 评论 -
Java TreeMap工作原理及实现(二)
1. 概述A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which con转载 2016-05-16 16:14:29 · 558 阅读 · 0 评论 -
Java TreeMap工作原理及实现(一)
目录(?)[+]TreeMap定义TreeMap特点HashMap与TreeMap的区别TreeMap定义package java.util;public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, java.io.Serializable{}pub转载 2016-05-16 13:16:00 · 2160 阅读 · 0 评论 -
Java LinkedHashMap工作原理及实现(一)
LinkedHashMap是Hash表和链表的实现,并且依靠着双向链表保证了迭代顺序是插入的顺序。非线程安全。首先来段代码(与HashMap那篇类似):Map map = new LinkedHashMap<>(); map.put("s1", 1); map.put("s2", 2); map.put("s3", 3);转载 2016-05-11 13:13:22 · 696 阅读 · 0 评论 -
Java LinkedList工作原理及实现(二)
源代码解读public class LinkedListE> extends AbstractSequentialListE> implements ListE>, DequeE>, Cloneable, java.io.Serializable功能和特点继承了一个抽象类AbstractSequentialList,这个类就是用调用ListIterator实现了元素转载 2016-05-12 17:59:31 · 402 阅读 · 0 评论 -
Java LinkedList工作原理及实现(一)
目录1. 概述2. set和get函数参考资料1. 概述以双向链表实现。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两转载 2016-05-12 14:03:34 · 395 阅读 · 0 评论 -
Java LinkedHashMap工作原理及实现(二)
使用场景如果需要使用的Map中的key无序,选择HashMap;如果要求key有序,则选择TreeMap。但是选择TreeMap就会有性能问题,因为TreeMap的get操作的时间复杂度是O(log(n))的,相比于HashMap的O(1)还是差不少的,LinkedHashMap的出现就是为了平衡这些因素,使得能够以O(1)时间复杂度增加查找元素,又能够保证key的有序性此外,Li转载 2016-05-11 17:20:28 · 624 阅读 · 0 评论 -
Java HashMap工作原理及实现(二)
类声明public class HashMap extends AbstractMap implements Map, Cloneable, Serializable功能和特点实现AbstractMap抽象类。Map的一些操作这里面已经提供了默认实现,后面具体的子类如果没有特殊行为,可直接使用AbstractMap提供的实现。实现Map,Clone,Seri转载 2016-05-10 13:07:10 · 673 阅读 · 0 评论 -
Java CopyOnWriteArrayList工作原理及实现(一)
并发优化的ArrayList。用CopyOnWrite策略,在修改时先复制一个快照来修改,改完再让内部指针指向新数组。因为对快照的修改对读操作来说不可见,所以只有写锁没有读锁,加上复制的昂贵成本,典型的适合读多写少的场景。如果更新频率较高,或数组较大时,还是Collections.synchronizedList(list),对所有操作用同一把锁来保证线程安全更好。增加了addIf转载 2016-05-18 15:22:00 · 444 阅读 · 0 评论