天天看點

集合學習筆記

   集合架構總結:

1 Collection接口 

2 Set接口

2.1 HashSet具體類(散列集)

  散列集是沒有重複元素的元素集合。散清單用連結清單數組實作,每個清單稱為桶。可以用add方法添加元素。contains方法用來快速檢視是否某個元素已經出現在集中,隻在桶内查找元素,不必檢視集合中所有元素。

  散清單疊代器将依次通路所有的桶。由于散列将元素分散在表的各個位置,是以通路順序是随機的。隻有不關心集合中的元素順序時才應該使用HashSet。

  HashSetTest.java

集合學習筆記
集合學習筆記

HashSetTest.java

集合學習筆記
集合學習筆記

View Code

2.2 TreeSet具體類(樹集)

  與散列集十分類似。樹集是一個有序的集合。可以以任意順序将元素插入到集合中。在對集合進行周遊時,每個值将自動的按照排序後的順序呈現(這點與散列集相反)。如:

 

  但是TreeSet如何知道希望元素怎樣排序呢,第一種方法,樹集假定插入的元素實作了Comparable接口。這個接口定義了一個方法。

  第二種方法,通過将比較器Comparator對象傳遞給TreeSet構造器來告訴樹集使用不同的比較方法。

3 List接口

3.1 ArrayList具體類(數組清單)

  ArrayList是List的子類,它和HashSet相反,允許存放重複元素,是以有序。集合元素被通路的順序取決于集合的類型。如果對ArrayList進行通路,疊代器從索引0開始,每疊代一次索引值加1。然而,如果通路HashSet中的元素,每個元素會按照随機次序出現。

  ArrayListSetTest.java

集合學習筆記
集合學習筆記

ArrayListSetTest.java

集合學習筆記
集合學習筆記

3.2 LinkedLis具體類(連結清單)

  LinkedList是一種可以在任何位置進行高效的插入和删除操作的有序序列。

  LinkedListTest.java

集合學習筆記
集合學習筆記

LinkedListTest.java

集合學習筆記
集合學習筆記

3.3 Vector具體類

  Vector: 基于Array的List,其實就是封裝了Array所不具備的一些功能友善我們使用,它不可能走入Array的限制。性能也就不能超越Array。是以在可能情況下,我們要多運用Array。另外很重要的一點是Vector"sychrovized" 的,這個是Vector和ArroyList的唯一差別。

  它實作了一個類似數組一樣的表,自動增加容量來容納你所需要的元素。使用下表存儲和檢索對象就像在一個标準的數組中一樣。你也可以用一個疊代器從一個Vector中檢索對象。Vector是唯一的同步容器類,當兩個或多個線程同時通路時,性能也是良好的。

3.4 Stack具體類

  這個類是從Vector派生而來,并且增加了方法實作棧操作,一種後進先出的存儲結構。

4 Map接口

4.1 HashMap具體類(散列映射)

4.2 LinkedHashMap具體類(連結映射表)

  連接配接散列映射表與散列映射表的差別在于,連結散列映射表将用通路順序,而不是用插入順序,對映射表條目進行疊代。

  各種具體類的比較:

集合學習筆記

  集合類架構圖:

集合學習筆記

當神已無能為力,那便是魔渡衆生

繼續閱讀