Map集合
特點: 該集合存儲鍵值對。一對一對往裏存,而且要保證鍵的唯一性。
方法
添加
i. put(K key, V value)
返回的V,爲之前同鍵的值。
ii. putAll(Map<? extends K , ?extends V> M)
刪除
i. clear():清空
ii. remove()
判斷
i. containsValue(Object value);
ii. containsKey(Object key);
iii. isEmpty();
獲取
get(Object key)
可以通過get方法的返回值來判斷一個鍵是否存在,通過返回null來判斷
size()
values()
獲取map集合中所有的值,返回的是collection集合。並且有泛型,需指定類型
Set<Map.Entry<k,v>> entrySet():
將map集合中的映射關係存入到set集合中,而這個關係的數據類型就是map.Entry.
首先將Map集合中的映射關係取出,存入到Set集合中。例:
Set<Map.Entry<String,String>> entrySet =map.entrySEt();
Map.Entry:其實Entry也是一個接口,它是Map接口中的一個內部接口。
Set<K> keySet():
將Map中所有的鍵存入到Set集合。因爲Set集合具備迭代器,所以可以通過迭代方式取出所有的鍵,再根據get方法,獲取每一個鍵對應的值。
Map的子類
Hashtable
底層是哈希表的數據結構,不存入null鍵和null值。該集合是線程同步的。
HashMap
底層是哈希表的數據結構,允許使用null鍵和null值,該集合是不同步的。
TreeMap
底層是二叉樹的數據結構,線程不同步。可以用於給map集合中的鍵進行排序。
Set底層就用使用的Map集合
當存入同鍵的值時,會替換之前的同鍵的值。
當發現有映射關係時,可以選擇Map集合,因爲map集合中存放就是映射關係。
map擴展知識
map集合被使用是因爲具備映射關係。
keySet() :
Set<String> set = hm.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String strkey = it.next();
String strval = hm.get(strkey);
System.out.println(strkey+":::::"+strval);
}
entrySet()
Set<Map.Entry<String,String>> set = hm.entrySet();
Iterator<Map.Entry<String,String>> it = set.iterator();
while(it.hasNext()){
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String val = me.getValue();
System.out.println(key+"::::"+val);
}