首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

聚合框架源码分析五之LinkedHashMap,LinkedHashSet

2012-09-20 
集合框架源码分析五之LinkedHashMap,LinkedHashSetLinkedHashMap是为了解决遍历Hash表的无序问题,它内部维

集合框架源码分析五之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);}}

热点排行