JAVA筆記--集合框架

兩個重要的接口:

Collection接口 又包括 Set(HashSet TreeSet) 和 List(ArrayList Vector)

util Map接口(HashMap TreeMap HashTable)


List  有序可重複

ArralyList順序結構 線程不安全的(不能保證同步) 

method:

  add()

  get(i) 返回第i個元素

  contain() 判斷是否包含某元素

  indexOf() 返回下標

  toArray() 轉換爲對象數組 Object[] objs = ...

  iterator() 返回迭代器  Iterator it = ...Iterator有next()方法和hasNext()方法

       

LinkedList 離散結構 線程不安全的(不能保證同步)

  add()

  具有ArrayList幾乎全部的method

  比ArrayList多實現了隊列的方法

  addFirst() 

  addLast()

  peek() 獲取但不移除第一個元素

  pop() 彈出第一個元素 並刪除


Set 

線程不安全(不同步,多線程涉及) 允許null值 無序的 可以添加重複元素但加不進入

無法使用for遍歷 可以使用迭代器Iterator it = set.iterator while(it.hasNext())

HashSet

  add()

  hasNext() 如果有下一個元素 返回true 並指向一個元素

  next() 返回迭代器的下一個元素 如果不知道下一個元素的數據類型 可以用Object obj;

TreeSet

LinkedSet 離散結構 有序的 其餘特點與Set相同

LinkedHashSet 

  

添加對象到集合裏 即使屬性相同 也認爲是兩個不同對象   

重寫hashCode()和equals()方法 可以解決上面的問題

重寫hashCode():基本數據類型可以直接返回其hashCode 或者返回定值(感覺hashCode本身就很扯)

重寫equals():若果每一個基本數據類型的equals返回true,則返回true。

集合的add()方法調用了對象的equals方法。

  

Map 

無序的

鍵值對 不能有重複的鍵

鍵、值都可以爲null

通過key來遍歷map

無法添加key相同而value不同的元素

HashMap HashTable TreeMap LinkedHashMap 

  put(key,value)  添加元素

  Set keys = map.ksySet(); 鍵值集合

  使用迭代器訪問keys

  map.get(key) 輸入key返回value

  

LinkedHashMap

有序的

HashTable

基於hash表實現Map接口

鍵和值都不能是null 值可以重複

線程安全的(同步)


TreeMap

基於紅黑樹

根據鍵值自然排序(依賴於Comparator接口)

鍵的數據類型一致 鍵不允許是null















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