1. 程式人生 > >Java資料結構--集合、陣列、佇列、連結串列

Java資料結構--集合、陣列、佇列、連結串列

一、集合

1、集合型別主要有3種:list、set和Map.

2、集合介面分為:Collection和Map,list、set實現了Collection介面.他的一個類繼承結構如下:

Collection<--List<--Vector

Collection<--List<--ArrayList

Collection<--List<--LinkedList

Collection<--Set<--HashSet

Collection<--Set<--HashSet<--LinkedHashSet

Collection<--Set<--SortedSet<--TreeSet

3、Iterator:迭代器,它是Java集合的頂層介面(不包括 map 系列的集合,Map介面 是 map 系列集合的頂層介面)

Iterable和Iterator的區別:

Iterable裡面封裝了 Iterator 介面。所以只要實現了只要實現了Iterable介面的類,就可以使用Iterator迭代器了。

Iterator :存在於 java.util 包中。核心的方法next(),hasnext(),remove()。

4、List:有序、可以有重複的集合

List 介面的三個典型實現:

  ①、List list1 = new ArrayList();

    底層資料結構是陣列,查詢快,增刪慢;執行緒不安全,效率高

    ②、List list2 = new Vector();

    底層資料結構是陣列,查詢快,增刪慢;執行緒安全,效率低,幾乎已經淘汰了這個集合

    ③、List list3 = new LinkedList();

    底層資料結構是連結串列,查詢慢,增刪快;執行緒不安全,效率高

5、Set:典型實現 HashSet()是一個無序,不可重複的集合

    ①、當向HashSet集合中存入一個元素時,HashSet會先呼叫該物件的hashCode()方法來得到該物件的hashCode值,然後根據hashCode值決定該物件在HashSet中的儲存位置

 ②、如果 hashCode 值不同,直接把該元素儲存到 hashCode() 指定的位置

 ③、如果 hashCode 值相同,那麼會繼續判斷該元素和集合物件的 equals() 作比較

 ④、hashCode 相同,equals 為 true,則視為同一個物件,不儲存在 hashSet()中

 ⑤、hashCode 相同,equals 為 false,則儲存在之前物件同槽位的連結串列上,這非常麻煩,我們應該約束這種情況,即保證:如果兩個物件通過 equals() 方法返回 true,這兩個物件的 hashCode 值也應該相同。

----------------------------------------------------------------------------------------------------------------------有待更新