码迷,mamicode.com
首页 > 其他好文 > 详细

LinkedHashSet类源码解析

时间:2016-07-19 11:06:14      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

LinkedHashSet概述:
LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。
注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必须保持外部同步。


package java.util;


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);
    }

    /**
     * Constructs a new, empty linked hash set with the default initial
     * capacity (16) and load factor (0.75).
     */
    public LinkedHashSet() {
        super(16, .75f, true);
    }


    public LinkedHashSet(Collection<? extends E> c) {
        super(Math.max(2*c.size(), 11), .75f, true);
        addAll(c);
    }
}

这个时候看不出来调用了LinkedHashMap
根据上调用父类HashSet的构造函数
HashSet中的这个构造函数

    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
        map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }

这里是用到的LinkedHashMap,而LinkedHashMap,维护一个双链表,可以根据插入顺序遍历集合元素,所有LinkedHashSet也容养具有了顺序遍历集合元素的功能。

LinkedHashSet类源码解析

标签:

原文地址:http://blog.csdn.net/qunxingvip/article/details/51933017

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!