读书人

聚合框架源码分析五之LinkedHashMap

发布时间: 2012-09-20 09:36:50 作者: rapoo

集合框架源码分析五之LinkedHashMap,LinkedHashSet
LinkedHashMap是为了解决遍历Hash表的无序问题,它内部维护了一个链表用于记录你插入元素(或你访问元素的顺序)的位置,遍历时直接遍历链表,元素的顺序即为你插入的顺序,但是Entry对象要多加两个成员变量before和after用于记录链表的前驱和后继。所以LinkedHashMap的的存储效率要低于HashMap,但是遍历效率要高于HashMap。
java.util.LinkedHashMap

/** * LinkedHashSet实际上是基于LinkedHashMap的基础上实现的, * LinkedHashSet继承自HashSet,在HashSet中有一构造方法 * HashSet(int initialCapacity, float loadFactor, boolean dummy)  * 第三个参数dummy为true时new出了一个LinkedHashMap实例,以Set中的 * 元素为键,以一个Object的虚假的对象为值,所以HashSet中的元素不可能重复。 * 以下构造函数dummy都为true */public class LinkedHashSet<E>extends HashSet<E>implements Set<E>, Cloneable, java.io.Serializable {private static final long serialVersionUID = -2851667679971038690L;public LinkedHashSet(int initialCapacity, float loadFactor) {    super(initialCapacity, loadFactor, true);}public LinkedHashSet(int initialCapacity) {    super(initialCapacity, .75f, true);}public LinkedHashSet() {    super(16, .75f, true);}public LinkedHashSet(Collection<? extends E> c) {    super(Math.max(2*c.size(), 11), .75f, true);    addAll(c);}}

读书人网 >编程

热点推荐