package com.common.api;
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
/*
* Map 集合的基本特點
* 1、該集合存儲鍵值對,一對一對存儲,而且鍵值不能重複
* 2、一個映射不能包含重複的鍵
*
* Map 功能函數:
* 1、添加
* V put(K key, V value) 將指定的值與該映射中的指定鍵相關聯(可選操作)。
* 注意:put方法返回key對應的原來的值,添加時如果出現
* 相同的鍵,則後添加的值會覆蓋之前的值,並將之前的值返回
* void putAll(Map<? extends K,? extends V> m) 將指定地圖的所有映射覆制到此映射(可選操作)。
* 2、刪除
* void clear() 從該地圖中刪除所有的映射(可選操作)。
* V remove(Object key) 如果存在(從可選的操作),從該地圖中刪除一個鍵的映射。
* 3、判斷
* boolean containsKey(Object key) 如果此映射包含指定鍵的映射,則返回 true 。
* boolean containsValue(Object value) 如果此地圖將一個或多個鍵映射到指定的值,則返回 true 。
* boolean equals(Object o) 將指定的對象與此映射進行比較以獲得相等性。
* boolean isEmpty() 如果此地圖不包含鍵值映射,則返回 true 。
* 4、獲取
* V get(Object key) 返回到指定鍵所映射的值,或 null如果此映射包含該鍵的映射。
* int size() 返回此地圖中鍵值映射的數量。
* Collection<V> values() 返回此地圖中包含的值的Collection視圖。
* Set<Map.Entry<K,V>> entrySet() 返回此地圖中包含的映射的Set視圖。
* 這種數據類型就是Map.Entry
* Set<K> keySet() 返回此地圖中包含的鍵的Set視圖。 Set集合具有迭代器,所以可以迭代取出所有值
* 5、修改
* default V replace(K key, V value) 只有當目標映射到某個值時,才能替換指定鍵的條目。
*
* Map
* |----Hashtable 底層是哈希表數據結構,不可以存入null鍵值,該集合是線程同步的
* |----HashMap 底層是哈希表數據結構,並允許使用null鍵值,該集合是線程不同步的
* |----TreeMap 底層是二叉樹數據結構,線程不同步,可以用於給map集合中的鍵進行排序
* 和TreeSet很像,其實TreeSet底層就是使用了TreeMap的集合
*
* Map 集合取出原理:將Map轉換爲Set,然後使用Set集合的迭代器取出
*
* Map 擴展知識
* map集合被使用是因爲具備映射關係
*/
public class MapDemo {
public static void method_map01()
{
Map<String,String> map=new HashMap<String,String>();
System.out.println("put 第一次返回的值:"+map.put("01","zhangsan"));
System.out.println("put 第二次返回的值:"+map.put("01","zhangsan01"));
map.put("02","lisi");
map.put("03","wangwu");
System.out.println("containsKey:"+map.containsKey("01"));
System.out.println("remove:"+map.remove("01"));
System.out.println(map);
System.out.println("get:"+map.get("02"));
map.put(null,"null");
System.out.println("get null :"+map.get("null"));
map.put("04",null);
System.out.println("get null key:"+map.get("04"));
Collection<String> a=map.values();
System.out.println(a);
Set<String> keySet=map.keySet();
Iterator<String> it=keySet.iterator();
while(it.hasNext())
{
String key=it.next();
System.out.println("key :"+key);
System.out.println("value :"+map.get(key));
}
Set<Map.Entry<String,String>> entrySet=map.entrySet();
Iterator<Map.Entry<String,String>> it1=entrySet.iterator();
while(it1.hasNext())
{
Map.Entry<String,String> me=(Map.Entry) it1.next();
String key=me.getKey();
String value=me.getValue();
System.out.println("key:"+key+" value: "+value);
}
}
public static void main(String[] args) {
// TODO Auto-generated metho d stub
method_map01();
}
}
執行結果爲:
put 第一次返回的值:null
put 第二次返回的值:zhangsan
containsKey:true
remove:zhangsan01
{02=lisi, 03=wangwu}
get:lisi
get null :null
get null key:null
[null, lisi, wangwu, null]
key :null
value :null
key :02
value :lisi
key :03
value :wangwu
key :04
value :null
key:null value: null
key:02 value: lisi
key:03 value: wangwu
key:04 value: null