Java源码解读扫盲【集合预览】

接口类图

        Java Collection由两套并行的接口组成,一套是Collection接口,一套是Map接口,以下图数组

在此输入图片描述

List:add/remove/get/set

        ArrayList:其实就是数组,利用Object[]实现的List,容量一大,频繁增删就是噩梦,适合随机查找安全

        LinkedList:单向链表,增长了push|pop|remove|pull,好啰嗦,其实都是removeFirst;数据结构

        Vector:历史遗留产物,同步版的ArrayList,代码和ArrayList太像;性能

        Stack:继承自Vector,Java里其实没有纯粹的Stack,本身实现一个吧,用组合的方式,封装一下LinkedList便可;spa

        Queue:原本是单独的一类,不过在SUN的JDK里就是用LinkedList来提供这个功能的,主要方法是offer/pull/peek;线程

Set:add/remove

        HashSet:内部采用HashMap实现的; 继承

        LinkedHashSet:同上,采用LinkedHashMap实现;接口

        TreeSet:同上,采用TreeMap实现;图片

Map:put/get/remove

        HashMap/HashTable:散列表,啥都不说了,和ArrayList同样采用数组实现,超过初始容量会对性能有损耗; rem

        LinkedHashMap:这个类有点意思,继承自HashMap,但经过重写嵌套类HashMap.Entry实现了链表结构,一样有容量的问题;

        Properties:继承的HashTable;

集合类的区分因素

        1.支持哪些操做接口

        2.内部实现的数据结构,及其相应的时空复杂度

        3.是否对插入元素的数量有限制

        4. 是否支持插入null元素

        5. 是否线程安全

        6. 是否支持阻塞

各个类的实现源码后面详细看

相关文章
相关标签/搜索