Java集合总结之Set整体框架

        与List不同的是,Set不允许有重复的元素,若添加的元素集合中已经有,则会把以前的元素覆盖掉,Set结构框图如下:


        首先,Set<E>中定义了一些常用的抽象方法供子类实现,Set<E>的子类或子接口有: SortedSet<E>和AbstractSet<E>。

        其中AbstractSet与AbstractCollection和AbstractList一样,都是对父亲的一个简单实现。SortedSet是对Set的一个提供排序功能的分类,默认是升序排序,也可以自己定义比较器实现其他排序,这个接口主要在Set的基础上提供了一个比较器以及获取集合中子集或单个元素的抽象方法。而NavigableSet则重载了SortedSet中的方法,让其能更加细致的操作集合中的元素。

        CopyOnWriteArraySet<E>底层维护的是一个CopyOnWriteArrayList<E>,所以与其一样CopyOnWriteArraySet也是线程安全的。

        EnumSet<E extends Enum<E>>是一个专门用来存储Enum类型元素的集合,所有元素必须是指定的、明确的Enum类型。底层维护的是一个Enum类型的集合:Enum[],底层代码如下:

    EnumSet(Class<E>elementType, Enum[] universe) {
        this.elementType = elementType;
        this.universe    = universe;
}

        ConcurrentSkipListSet<E>底层维护的是一个ConcurrentSkipListMap,所有元素按自然顺序排列,也可以在构造对象时传入一个比较器,用该比较器来排序。

        HashSet<E>是一个无序的集合,,TreeSet<E>是有序的,具体如何存储请参考:http://blog.csdn.net/snail_rao/article/details/7347467


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值