標籤:
學習集合需要掌握1136, 即一個圖,一個類(Collections),三個知識點(foreach, 泛型, 自動打包和解包),六個介面(Collection, List, Set, Map, Iterator, Comparable).
1. 一個圖:Map儲存的是索引值對,可以認為是雙列Collection.
2. 一個類:java.utils.Collections類
java.utils.Collections類提供了一些靜態方法實現了基於List容器的一些常用演算法。
void sort(List), 對List容器內的元素排序
void shuffle(List), 對List容器內的對象進行隨機排序
void reverse(List), 對List容器內的對象進行逆序排列
void fill(List, Object), 用一個特定的對象重寫整個List容器
void copy(List dest, List src), 將src List容器內容複製到dest List容器
int binarySearch(List, Object), 對於順序的List容器,採用折半尋找的方法尋找特定對象
3. Comparable介面:
大家或有疑問,上面那的演算法是根據什麼來確定容器中的對象的“大小”順序的呢?
所有可以"排序"的類都實現了java.lang.Comparable介面,Comparable介面中只有一個方法:
public int compareTo(Object obj), 改方法的傳回值:
返回0, 表示this == obj
返回正數, 表示this > obj
返回負數,表示this < obj
實現了Comparable介面的類通過實現compareTo方法從而確定該類對象的排序方式。
注意重寫compareTo(Object o)的時候要先判斷o是不是當前類類型的:不是,就拋出一個異常;是,接著寫判斷邏輯
4.如何選擇資料結構
衡量標準: 讀的效率和改的效率
Array讀快改慢,集合佔用一塊連續的記憶體
Linked改快讀慢, 集合中的元素分散在記憶體中,通過指標相連
Hash兩者之間
5.Map介面
實現Map介面的類用來儲存鍵-值對。
Map介面的實作類別有HashMap(以Hash表作為索引)和TreeMap(以Tree作為索引)等。
Map類中儲存的鍵-值對通過鍵來標識,所以鍵的值不能重複。
常用方法:
Object put(Object key, Object value), 往容器裡添加索引值對,如果key已經存在,則將key對應的value的值設定為新value,返 回值是原來的value。
Object get(Object key), 找到key對應的value,找不到,則返回 null。
Object remove(Object key), 如果存在一個鍵的映射關係,則將其從此映射中移除(可選操作)。
boolean containsKey(Object key), 如果此映射包含指定鍵的映射關係,則返回 true。
boolean containsValue(Object value), 如果此映射將一個或多個鍵映射到指定值,則返回 true。
int size(), 返回此映射中的鍵-值對應關係數。
boolean isEmpty(), 如果此映射未包含鍵-值對應關係,則返回 true。
void putAll(Map m), 從指定映射中將所有映射關係複製到此映射中(可選操作)。
void clear(), 從此映射中移除所有映射關係(可選操作)。
6. 自動裝箱拆箱
自動將基礎類型轉換為對象
自動將對象轉換為基礎類型
Java學習筆記--集合