Java1.8类库源码分析
Gordon_H
Stay hungry, stay foolish.
展开
-
HashMap源码分析
HashSet、HashMap概述分别实现了Set和Map接口,底层用哈希表来存储,迭代时是无序的。 add、remove、contains、size方法是常数时间的,遍历是O(N+M)的(N表示桶数,M表示元素个数)。 都是非线程安全的,类似的也可以用Collections.synchronizedSet转化为线程安全的容器。 HashSet实质上也是基于HashMap来实现的,只是map中原创 2017-11-27 16:14:48 · 181 阅读 · 0 评论 -
LinkedList源码分析
LinkedList概述LinkedList是一个双向链表,每个节点持有next和prev的引用,该类实现了List和Deque接口。与ArrayList类似,这个容器也不是线程安全的,可以通过Collections.synchronizedList来转换。通过iterator获得的迭代器也是fail-fast的。源码分析 构造器 // 头结点 transient Node<E> f原创 2017-11-27 16:13:36 · 203 阅读 · 0 评论 -
ArrayList源码分析
Java1.8类库源码分析-集合框架-ArrayList原创 2017-11-27 16:12:18 · 160 阅读 · 0 评论 -
TreeMap源码分析
TreeSet、TreeMap概述与HashSet及HashMap类似,TreeSet是基于TreeMap实现的,所以分析TreeMap即可。 TreeMap是基于红黑树实现的,元素是根据key的自然顺序排列的,也可以在构造器中传入Comarator来指定排序器。 containsKey、get、put、remove操作都是log(n)时间复杂度的,要注意排序的规则要与key的equals一致,原创 2017-11-27 16:15:40 · 189 阅读 · 0 评论