定義:泛型,即「參數化類型」。一提到參數,最熟悉的就是定義方法時有形參,然後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?顧名思義,就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之爲類型形參),然後在使用/調用時傳入具體的類型(類型實參)。
舉例: List list = new ArrayList();
T就是泛型,指list只能存儲T類型的數據。
Comparable(可比、堪比、可比較的)接口 ,
接口中只有一個方法 int compareTo(Object o)
只要我們某個類實現了該方法,我們自定義類的對象就具備了比較的功能。就可以使用Arrays.sort(Object[] os)進行排序了。
返回值是一個大於0 或者小於0 或者等於0 的值,,
sort 方法會根據返回值 的符號位 進行是否交換位置的判斷
所有可以進行排序的對象,必須實現Comparable接口。並按照某種規則(實現compareTo 方法) 實現排序。
侷限性:只能按照某一種指定的規則進行排序。
內部比較器:要比較的類只要實現了comparable接口,就可以調用Arrays.sort();方法進行排序了。可以重寫compareTo方法,自定義排序方法。
外部比較器:新建一個類實現comparator接口,在裏面定義比較方法。就可調用此方法進行排序。
使用iterator()要求容器返回一個Iterator, Iterator將準備好返回序列的第一個元素;
使用next()獲得序列中的下一個元素;
使用hasNext()檢查序列中是否還有元素;
使用remove()將迭代器返回的元素刪除.
舉例: List l = new ArrayList();
for(iterator it = l.iterator();it.hasNext;){
System.out.println(it.next);
}
存儲元素特點:無序、可重複。
常見方法:
刪除:retainAll(Collection) removeAll(Collection) remove(Obj) clear() remove(index)
查看:isEmpty() contains(Obj) size() containsAll(Collection) indexOf(Obj) lastIndexOf(Obj)
get(index)
添加:add(Obj) addAll(Collection) add(index,Obj) addAll(index,Collection)
修改:set(index,Obj) trimToSize()
迭代:foreach for iterator (listiterator)
存儲元素特點:有序 可重複
常見方法:
刪除:retainAll(Collection) removeAll(Collection) remove(Obj) clear() remove(index)
查看:isEmpty() contains(Obj) size() containsAll(Collection) indexOf(Obj) lastIndexOf(Obj)
get(index)
添加:add(Obj) addAll(Collection) add(index,Obj) addAll(index,Collection)
修改:set(index,Obj) trimToSize()
迭代:foreach for iterator (listiterator)
存儲元素特點:無序 唯一的
常見方法:
刪除:retainAll(Collection) removeAll(Collection) remove(Obj) clear() remove(index)
查看:isEmpty() contains(Obj) size() containsAll(Collection) indexOf(Obj) lastIndexOf(Obj)
get(index)
添加:add(Obj) addAll(Collection) add(index,Obj) addAll(index,Collection)
修改:set(index,Obj) trimToSize()
迭代:foreach iterator
存儲元素特點:鍵值對(鍵:key 相當於Set,唯一的 值:value 相當於Collection 可重複)
常見方法:
添加:put(k,v)
刪除:remove(k)
entrySet() value() ketSet() get(key)
迭代:
keySet()->[foreach/iterator]——>get(key)
entrySet()->[foreach/iterator]->getKey()/getValue()
iterator:實現了該接口的 可以作爲foreach語句的目標
Listiterator:迭代器 List迭代器 正向/逆向迭代 併發操作
底層實現方式:數組
優點:隨機【根據索引】獲取效率高
缺點:刪除、添加效率低
優點:底層數據結構是鏈表,查詢慢,增刪快
缺點:線程不安全,效率高
優點:底層數據結構是數組,查詢快,線程安全
缺點:增刪慢;效率低,幾乎已經淘汰了這個集合
優點:其底層其實是一個數組,存在的意義是加快查詢速度
缺點:不能保證元素的順序;不可重複;不是線程安全的;集合元素可以爲 NULL
優點:不可以重複,有序,因爲底層採用 鏈表 和 哈希表的算法。鏈表保證元素的添加順序,哈希表保證元素的唯一性
缺點:底層採用了 哈希表算法以及 鏈表算法,既保證了元素的添加順序,也保證了查詢效率。但是整體性能要低於 HashSet
優點:有序;不可重複,底層使用 紅黑樹算法,擅長於範圍查詢
缺點:不保證元素的添加順序
優點:Iterator遍歷是排序的
缺點:插入、刪除消耗性能,效率低
集合的工具類,可以更方便的使用集合。
常用方法:
asList方法:使用該方法可以返回一個固定大小的List
binarySearch方法:支持在整個數組中查找,以及在某個區間範圍內查找
copyOf及copyOfRange方法:可以方便複製數組集合。
sort方法:可以方便排序。
toString方法:可以方便我們打印出數組內容。
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。