Java集合概要

Java集合主要分为三种类型:Set、List 、Map,其中Set和List均实现了Collection接口,Map为单独的一类接口。集合类存储的是特定的类型,不能为基本类型。

其接口主要实现和继承关系如下:

Collection
├List
│├LinkedList  (底层是双向链表实现)
│├ArrayList (底层为对象数组,容量默认为10,扩容1.5,即每次增长原来的0.5倍)
│└Vector(底层为对象数组,容量默认为10,可按规定值扩容,默认为每次增长为原来的1倍,线程安全)
│ └Stack(继承Vector,操作都是对vectort底层操作的封装)
├Set 
│ ├ hasSet (底层是由hashMap实现的,hashMap 的key存储hasSet的元素,value采用默认静的object)
│ ├treeSet(底层为treeMap实现的,key存储元素,value采用静态的object)
├Queue
    ├priorityQueue

Map
├Hashtable(基本同hashMap,默认为11,只不过hashtable为线程安全的,不允许有null值,put, get 都加锁)
├HashMap(Entry链表+数组,默认容量为16,负载因子为0.75;长度大于n*16*0.75则容量增大一倍)
└WeakHashMap
└LinkedHashMap(底层为hashMap的Entry双向链表,继承自hashMap)
└TreeMap(底层为红黑树实现,继承自AbstractMap,而AbstractMap又实现了Map接口)
 LSortedMap
├concurrentHashMap(采用锁分离 来保证大并发的效率,Segment数组结构和HashEntry数组结构组成,table[]--hashTable  ,segments[]--table;put加锁,get不加锁)

接下来的几篇会详细介绍几个常用的集合类及其源码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章