1.什麼是Map
Map是Java集合中的三大接口之一,其存儲形式爲鍵(Key)值(Value)對,是程序開發中大部分數據存儲時
所採用的存儲形式。如:MySQL、JSON、XML。
Map形式稱爲雙邊隊列,即Key與Value互相對應。但需要注意:Key是唯一的,不可能有多個重複的Key。
而Value是可重複的。
具體形式如表格:
Key | Value |
---|---|
姓名 | 燕雙鷹 |
年齡 | 30 |
性別 | 男 |
2.Map接口的實現類
interface Map<K, V>
--| class HashMap<K, V> 哈希表
--| class TreeMap<K, V> 底層是樹形結構,存儲要求K有對應的排序方式
3.方法
3.1 增:
put(K k, V v);
存入一個鍵值對類型,K和V都要符合泛型約束
putAll(Map < ? extends K, ? extends V > map);
存入另一個Map雙邊隊列,並且要求添加的Map雙邊隊列中的K和V都要和當前Map中存儲的K和V一致。
3.2 刪:
remove(Object k);
刪除對應K的鍵(Key)值(Value)對
3.3 改:
put(K k, V v);
對應當前K存在,修改對應內容
3.4 查:
int size();
當前Map雙邊隊列中,有效鍵值對個數
boolean isEmpty();
是否爲空
boolean containsKey(Object key);
判斷指定的Key是否存在
boolean containsValue(Object value);
判斷指定的Value是否存在
Set<K> keySet();
返回整個Map雙邊隊列中所有Key對應的Set集合
【注意:】
一個方法使用set結尾,表示該方法返回值是一個集合類型,大多數情況下都是Set類型
Collection<V> values();
返回整個Map雙邊隊列中所有Value對應的Collection集合
【注意】
方法名如果是一個複數,返回值類型集合或者數組情況居多
4.EntrySet
Entry可以認爲是鍵值對對象。
定義在Map類內
class Entry<K,V> {
K k;
V v;
}
K, V 是完全依賴於Map約束的,這裏可以認爲Entry裏保存的是每一個鍵值對類對象。
Map中提供了一個方法
Set<Entry<K, V>> entrySet
返回值是鍵值對類對象Set集合
Set集合中存儲的是Entry類型
Entry類型是帶有泛型的
代碼:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("吳京", "謝楠");
map.put("鄧超", "娘娘");
map.put("黃磊", "孫莉");
map.put("王寶強", "XX");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
System.out.println(entrySet);
}
}
運行結果:
[鄧超=娘娘, 吳京=謝楠, 黃磊=孫莉, 王寶強=XX]
5.TreeMap
K是需要有對應的比較方式,如果沒有比較方式,則無法存入
推薦使用Comparator接口。