[专栏]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 · 623 阅读 · 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 · 432 阅读 · 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 · 2054 阅读 · 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 · 549 阅读 · 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 · 2154 阅读 · 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 · 691 阅读 · 0 评论 -
Java LinkedList工作原理及实现(二)
源代码解读 public class LinkedListE> extends AbstractSequentialListE> implements ListE>, DequeE>, Cloneable, java.io.Serializable 功能和特点 继承了一个抽象类AbstractSequentialList,这个类就是用调用ListIterator实现了元素转载 2016-05-12 17:59:31 · 398 阅读 · 0 评论 -
Java LinkedList工作原理及实现(一)
目录 1. 概述2. set和get函数参考资料 1. 概述 以双向链表实现。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。 按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。 插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两转载 2016-05-12 14:03:34 · 387 阅读 · 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 · 619 阅读 · 0 评论 -
Java HashMap工作原理及实现(二)
类声明 public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 功能和特点 实现AbstractMap抽象类。Map的一些操作这里面已经提供了默认实现,后面具体的子类如果没有特殊行为,可直接使用AbstractMap提供的实现。实现Map,Clone,Seri转载 2016-05-10 13:07:10 · 670 阅读 · 0 评论 -
Java CopyOnWriteArrayList工作原理及实现(一)
并发优化的ArrayList。用CopyOnWrite策略,在修改时先复制一个快照来修改,改完再让内部指针指向新数组。 因为对快照的修改对读操作来说不可见,所以只有写锁没有读锁,加上复制的昂贵成本,典型的适合读多写少的场景。如果更新频率较高,或数组较大时,还是Collections.synchronizedList(list),对所有操作用同一把锁来保证线程安全更好。 增加了addIf转载 2016-05-18 15:22:00 · 441 阅读 · 0 评论