來源:尚硅谷:http://www.gulixueyuan.com/my/course/310
Map接口概述
- Map與Collection並列存在。用於保存具有映射關係的數據:key-value
- Map 中的 key 和 value 都可以是任何引用類型的數據
- Map 中的 key 用Set來存放,不允許重複,即同一個 Map 對象所對應 的類,須重寫hashCode()和equals()方法
- 常用String類作爲Map的“鍵”
- key 和 value 之間存在單向一對一關係,即通過指定的 key 總能找到 唯一的、確定的 value
- Map接口的常用實現類:HashMap、TreeMap、LinkedHashMap和 Properties。其中,HashMap是 Map 接口使用頻率最高的實現類
Map接口:常用方法
添加、刪除、修改操作:
- Object put(Object key,Object value):將指定key-value添加到(或修改)當前map對象中
- void putAll(Map m):將m中的所有key-value對存放到當前map中
- Object remove(Object key):移除指定key的key-value對,並返回value
- void clear():清空當前map中的所有數據
// 添加、刪除、修改操作
@Test
public void test1(){
Map map = new HashMap();
//添加
map.put("AA",123);
map.put(45,123);
map.put("BB",56);
//修改
map.put("AA",87);
System.out.println("Map集合中的元素爲:"+map);
Map map1 = new HashMap();
map1.put("CC",123);
map1.put("DD",123);
map.putAll(map1);
System.out.println("Map集合中的元素爲:"+map);
//remove(Object key):移除指定key的key-value對,並返回value
Object value = map.remove("CC");
System.out.println("調用remove()方法移除key爲“CC”的鍵值對,返回它的值:"+value);
System.out.println("調用remove()後的map集合:"+map);
//clear():清空當前map中的所有數據
map.clear();
System.out.println("map.size:"+map.size());
System.out.println("調用clear()後的map集合元素:"+map);
}
Map集合中的元素爲:{AA=87, BB=56, 45=123}
Map集合中的元素爲:{AA=87, BB=56, CC=123, DD=123, 45=123}
調用remove()方法移除key爲“CC”的鍵值對,返回它的值:123
調用remove()後的map集合:{AA=87, BB=56, DD=123, 45=123}
map.size:0
調用clear()後的map集合元素:{}
元素查詢的操作:
- Object get(Object key):獲取指定key對應的value
- boolean containsKey(Object key):是否包含指定的key
- boolean containsValue(Object value):是否包含指定的value
- int size():返回map中key-value對的個數
- boolean isEmpty():判斷當前map是否爲空
- boolean equals(Object obj):判斷當前map和參數對象obj是否相等
// 元素查詢的操作:
@Test
public void test2(){
Map map = new HashMap();
map.put("AA",123);
map.put(45,123);
map.put("BB",56);
//Object get(Object key):獲取指定key對應的value
System.out.println(map.get(45));
//boolean containsKey(Object key):是否包含指定的key
boolean isExist = map.containsKey("BB");
System.out.println(isExist);
//boolean containsValue(Object value):是否包含指定的value
isExist = map.containsValue(123);
System.out.println(isExist);
map.clear();
//boolean isEmpty():判斷當前map是否爲空
System.out.println(map.isEmpty());
}
123
true
true
true
元視圖操作的方法:
- Set keySet():返回所有key構成的Set集合
- Collection values():返回所有value構成的Collection集合
- Set entrySet():返回所有key-value對構成的Set集
@Test
public void test3(){
Map map = new HashMap();
map.put("AA",123);
map.put(45,1234);
map.put("BB",56);
//keySet():返回所有key構成的Set集合
Set keySet = map.keySet();
//使用迭代器遍歷set集合的key
Iterator iterator = keySet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("------------------------------------");
Collection values = map.values();
//使用增強for循環遍歷values
for (Object obj : values){
System.out.println(obj);
}
System.out.println("------------------------------------");
//entrySet():返回所有key-value對構成的Set集合
//遍歷所有的key-value
//方式一:entrySet()
Set entrySet = map.entrySet();
Iterator iterator1 = entrySet.iterator();
while (iterator1.hasNext()){
Object object = iterator1.next();
//entrySet集合中的元素都是entry
Map.Entry entry = (Map.Entry) object;
System.out.println(entry.getKey() + "---->" + entry.getValue());
}
System.out.println("------------------------------------");
//方式二:
Set keySet1 = map.keySet();
Iterator iterator2 = keySet1.iterator();
while (iterator2.hasNext()){
Object key = iterator2.next();
Object value = map.get(key);
System.out.println(key + "===" + value);
}
}
AA
BB
45
------------------------------------
123
56
1234
------------------------------------
AA---->123
BB---->56
45---->1234
------------------------------------
AA===123
BB===56
45===1234
總結:Map的常用方法
- 添加:put(Object key,Object value)
- 刪除:remove(Object key)
- 修改:put(Object key,Object value)
- 查詢:get(Object key)
- 長度:size()
- 遍歷:keySet() / values() / entrySet()