您的位置:首页 > 编程语言 > Java开发

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

2018-03-12 00:00 106 查看

接口类图

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即可;

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

Set:add/remove

HashSet:内部采用HashMap实现的;

LinkedHashSet:同上,采用LinkedHashMap实现;

TreeSet:同上,采用TreeMap实现;

Map:put/get/remove

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

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

Properties:继承的HashTable;

集合类的区分因素

1.支持哪些操作接口

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

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

4. 是否支持插入null元素

5. 是否线程安全

6. 是否支持阻塞

各个类的实现源码后面详细看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  集合 Java源码