大家都在用到集合,但是你真的懂了集合吗?今天,就为大家浅浅的分析一下我们经常使用的一些集合和它们的区别之处。
一.集合的结构图
集合按单列、双列分成了Collection(接口)、双列集合Map(接口)
以下是单列集合的结构图
单列里面的比较多,主要讲List里面的ArrayList、Vector、LinkedList,Set里面的HashSet、TreeSet、以及LinkedHashSet,队列不涉及
以下是双列集合的结构图
双列集合里面主要讲HashMap、HashTable、TreeMap、LinkedHashMap
二.单列集合实现子类基础知识
1.ArrayList的底层实现?如何扩容?
ArrayList的底层是一个可变的数组,扩容按数组的1.5倍进行
2.Vector的底层实现?如何扩容?
vector的底层实现与ArrayList相似,但是使用连续的存储空间,但其扩容是按2倍来进行的
3.LinkedList的底层实现?
LinkedList的底层是一个双向链表
4.HashSet的底层实现?
HashSet的底层其实是HashMap
5.LinkedhashSet的底层实现?
LinkedhashSet的底层是一个LinkedhashMap
三.双列集合实现子类基础知识
1.HashMap
hashMap的底层是一个数组+链表+红黑树
2.hashTable
hashtable底层为数组(Entry[ ])+链表