標籤:
MAP
Map用於儲存具體映射關係的資料,因此Map集合裡儲存著兩組值,一組值用於儲存Map裡的key,另外一組值用於儲存Map裡的value,key和value都可以是任意類型的資料。Map的key不允許重複,即同一個Map對象的任何兩個key通過equals方法比較總是返回false。
map介面定義了如下方法:
V put(K key,V value) -------------------->添加一個key-value對,如果當前map中已有一個與當前key相等的key-value對,則新的key-value會覆蓋原來的key-value對。V remove(Object key) --------------------->刪除指定的key所對應的key-value對,返回被刪除key所關聯的value,如果key不存在返回nullvoid clear() --------------------->刪除該集合裡的所有key-value對boolean containsKey(Object key)----------->查詢該集合裡是否包含指定的key,如果包含返回trueboolean containsValue(Object value)------->查詢該集合是否包含一個或多個value,如果包含返回trueboolean isEmpty() -------------------->查詢該集合是否為空白int size() ------------------->查詢該集合裡的key-value對的個數Set entrySet() ------------------->返回該集合中包含的key-value對所組成的set集合,每個集合元素都是map.entry(entry是map的內部類)對象Set keyset() ------------------->返回該map中所有key組成的set集合 拓展:MAP中包含一個內部類Entry,該類封裝了一個key-value對。Entry包含如下三個方法: Object getKey():返回該Entry裡包含的key值。 Object getValue():返回該Entry裡包含的value值。 Object setValue(V value):設定該Entry裡包含的value值,並返回新設定的value值
Map集合的遍曆:
例子:
Map<String,String> hm = new HashMap<String,String>();
hm.put("it002","hello");
hm.put("it003","world");
hm.put("it001","java");
//A:鍵找值
Set<String> set = hm.keySet();//擷取所有鍵的集合
for(String key : set) {
String value = hm.get(key);
System.out.println(key+"---"+value);
}
//B:索引值對對象找鍵和值
Set<Map.Entry<String,String>> set2 = hm.entrySet();//擷取所有的索引值對對象的集合
for(Map.Entry<String,String> me : set2) {
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"---"+value);
}資料結構
ArrayXxx:底層資料結構是數組,查詢快,增刪慢
LinkedXxx:底層資料結構是鏈表,查詢慢,增刪快
HashXxx:底層資料結構是雜湊表。依賴兩個方法:hashCode()和equals()
TreeXxx:底層資料結構是二叉樹。兩種方式排序:自然排序和比較子排序
HashMap和Hashtable鍵是雜湊表結構,可以保證鍵的唯一性HashMap和Hashtable都是map介面的實作類別,他們之間的關係完全類似於ArrayList和Vector的關係:Hashtable是一個古老的map實作類別,它從JDK1.0開始出現,當時java還沒提供map介面。 HashMap和Hashtable區別: 1.Hashtable是一個安全執行緒的map實現,但HashMap是線程不安全的實現,故HashMap的效能較高 2.Hashtable不允許使用null作為key和value,如果試圖將null放入Hashtable,會報NullPointException異常;但HashMap可放入null作為key或value。
Hashtable的一個子類Properties:
Properties類似Windows操作平台上的ini檔案就是一種屬性檔案。Properties可以把Map對象和屬性檔案管理起來,從而可以把map對象中的key-value對寫入屬性檔案。也可以把屬性檔案裡的內容載入到map對象中,由於屬性檔案裡的屬性名稱、屬性值只能是字串類型,故Properties裡的key、value都是字串類型。
它有如下方法:
String getProperty(String key) :擷取Properties中指定屬性名稱對應的屬性值。
Object setProperty(String key, String value) :設定屬性值,類似於Hashtable的put方法。
void load(Reader reader):從屬性檔案中載入key-value對,把載入的key-value對追加到Properties裡。
void store(OutputStream out, String comments):將Properties的key-value對輸出到屬性檔案裡。
TreeMap鍵是紅/黑樹狀結構結構,可以保證鍵的排序和唯一性
java基礎(八)---map