Java Collection由两套并行的接口组成,一套是Collection接口,一套是Map接口,以下图数组
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;线程
HashSet:内部采用HashMap实现的; 继承
LinkedHashSet:同上,采用LinkedHashMap实现;接口
TreeSet:同上,采用TreeMap实现;图片
HashMap/HashTable:散列表,啥都不说了,和ArrayList同样采用数组实现,超过初始容量会对性能有损耗; rem
LinkedHashMap:这个类有点意思,继承自HashMap,但经过重写嵌套类HashMap.Entry实现了链表结构,一样有容量的问题;
Properties:继承的HashTable;
1.支持哪些操做接口
2.内部实现的数据结构,及其相应的时空复杂度
3.是否对插入元素的数量有限制
4. 是否支持插入null元素
5. 是否线程安全
6. 是否支持阻塞
各个类的实现源码后面详细看