兩個重要的接口:
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