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

器皿学习六:HashSet & LinkedHashSet & TreeSet源码分析

2012-12-28 
容器学习六:HashSet & LinkedHashSet & TreeSet源码分析?一.概述???? Set是通过Map来支持的,Set接口里的所

容器学习六:HashSet & LinkedHashSet & TreeSet源码分析

?一.概述

???? Set是通过Map来支持的,Set接口里的所有方法,都委托给内部的Map去实现。

?

二.HashSet源码

public class LinkedHashSet<E>    extends HashSet<E>                //extends HashSet    implements Set<E>, Cloneable, java.io.Serializable {    private static final long serialVersionUID = -2851667679971038690L;    public LinkedHashSet(int initialCapacity, float loadFactor) {        super(initialCapacity, loadFactor, true);     //dummy=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);    }
?

四.TreeSet源码

???? 同HashSet一样的道理,就不贴代码了。

?

五.Set里面是否能存放null

???? 不必刻意去记,把前几篇分析Map的文章搞清楚了,很自然就知道了。

    HashMap允许插入null key,null value,所以HashSet可以插入null数据。Hashtable不允许插入null key,null value,如果一个Set用Hashtable去实现,那么这个Set不可以插入null数据。LinkedHashMap只是在HashMap基础上加了一个链表,所有的操作同HashMap,所以LinkedHashMap允许插入null key,null value,LinkedHashSet也就插入null数据。自然顺序时TreeMap不允许插入null key,容许插入null value,所以自然顺序时TreeSet不可以插入null数据。

?

热点排行