先來一張集合概要圖:
PS:有序是指元素按照添加時候的順序排列。
Collection 接口
Collection 是最基本的集合接口,一個 Collection 代表一組 Object甲脏,即 Collection 的元素, Java不提供直接繼承自Collection的類,只提供繼承于的子接口(如List和set)。
List 接口
List接口是有序的集合悼沈,使用此接口能夠精確的控制每個元素插入的位置,能夠通過索引(元素在List中位置姐扮,類似于數(shù)組的下標(biāo))來訪問List中的元素絮供,第一個元素的索引為 0,而且允許有相同的元素和空元素茶敏。
-
ArrayList
是以一種類似數(shù)組的形式進行存儲壤靶,因此它的隨機訪問速度極快,能在遍歷和隨機訪問時提供更好的性能惊搏。該類是非同步的贮乳,在多線程環(huán)境下需要自己手動管理線程的同步問題忧换。 -
LinkedList
是以一種基于鏈表數(shù)據(jù)結(jié)構(gòu)的集合類,適用于需要進行頻繁的插入向拆、刪除操作的數(shù)據(jù)集亚茬。該類是非同步的,可以通過List list = Collections.synchronizedList(new LinkedList(...))構(gòu)造一個同步的List集合浓恳。
PS:Collections是一個很好用的集合工具類哦刹缝。
Set接口
Set 接口是無序的集合(PS:準(zhǔn)確的說是絕大部分Set是無序的),Set 不保存重復(fù)的元素颈将。
-
HashSet
該類實現(xiàn)了Set接口梢夯,不允許出現(xiàn)重復(fù)元素,不保證集合中元素的順序晴圾,允許包含值為null的元素颂砸,但最多只能一個,并且存放到HashSet中的對象需要實現(xiàn)hashCode()方法死姚。 -
TreeSet
該類實現(xiàn)了Set接口人乓,將放入其中的元素按序排放,可以實現(xiàn)排序等功能知允,這就要求你放入其中的對象是可排序的撒蟀,需要使用到集合框架提供的另外兩個實用類Comparable和Comparator。
Map接口
Map是一種把鍵對象和值對象進行關(guān)聯(lián)的容器温鸽,而一個值對象又可以是一個Map保屯,依次類推,這樣就可形成一個多級映射涤垫。對于鍵對象來說姑尺,像Set一樣,一個Map容器中的鍵對象不允許重復(fù)蝠猬,這是為了保持查找結(jié)果的一致性;如果有兩個鍵對象一樣切蟋,那你想得到那個鍵對象所對應(yīng)的值對象時就有問題了,可能你得到的并不是你想的那個值對象榆芦,結(jié)果會造成混亂柄粹,所以鍵的唯一性很重要,也是符合集合的性質(zhì)的匆绣。
-
HashMap
HashMap 是一個散列表驻右,它存儲的內(nèi)容是鍵值對(key-value)映射。該類根據(jù)鍵的hashcode值存儲數(shù)據(jù)崎淳,具有很快的訪問速度堪夭,最多允許一條記錄的鍵為null,不支持線程同步。 -
TreeMap
該類繼承自AbstractMap森爽,將放入其中的元素對鍵按序排放恨豁。