Map存值問題的研究

java中在map中存取值操做

在java中map是使用鍵值對的形式存在的這與數組很是的類似。Map是一個接口它當中包括:HashTable,HashMap,TreeMap等實現類!java

對map操做的方法有如下幾種,經過這些方法將Map中的內容進行修改:數組

clear()從Map中清除全部的映射。spa

remove(指定的鍵)從Map中刪除鍵和與之關聯的值!指針

put(鍵,值)在map集合中添加一組鍵值對。對象

putAll(Map)將指定的Map複製到此映射中!排序

HashMap是一個最經常使用的Map,它是根據鍵值一一對應的關係來存儲數據!根據鍵能夠直接獲取到它對應的值。HashMap最多隻容許一條記錄的鍵爲null,容許多條記錄的值爲null。(其實也不是不容許多條記錄爲null,由於看下面我寫的代碼):接口

public static void printHashMap(){//操做HashMap()的方法!!hashMap是無序的
		Map<String, String> map=new HashMap<String, String>();
		map.put(null,"??");
		map.put(null, "4");
		map.put("fasda","fasd");
		System.out.println(map);
}

輸出的結果就是:rem

{null=4, fasda=fasd}

可見map.put(null,"??");沒有附上值(其實也不是沒有付上值只不事後來的map.put(null,"4")將上面的值覆蓋了)字符串

HashTable實現一個映象,它不容許全部的鍵值對爲空,可是他容許鍵值爲「」(空字符串)。get

Hashtable<String,String> map=new Hashtable<String,String>();//操做HashTable的方法!!!無序的
		map.put("","01");
		//map.put(null,"02");
		map.put("03","03");
		map.put("04","04");
		System.out.println(map);
		Iterator<String> iterator=map.keySet().iterator();
		while(iterator.hasNext()){
			Object key=iterator.next();
			System.out.println(map.get(key));
		}

輸出結果是:

{03=03, 04=04, =01}
03
04
01

若是將上面的map.put(null,"02")放開的話就會報空指針異常:

Exception in thread "main" java.lang.NullPointerException
	at java.util.Hashtable.hash(Unknown Source)
	at java.util.Hashtable.put(Unknown Source)
	at map.MyMapClass.printHashtable(MyMapClass.java:30)
	at map.MyMapClass.main(MyMapClass.java:13)

TreeMap默認爲是升序排序,能夠指定排序用的比較器,可是比較器必須實現Comparator接口。只有TreeMap纔可以把保存的記錄根據鍵排序,所以,能夠把其餘Map轉化爲TreeMap,轉化的方法就是把其餘的Map對象做爲參數狗仔TreeMap便可。 

   Map中存值問題,當一個鍵值對應存一個值後,再次操做對應的鍵存值,則會清空本來的鍵對應的值,存入新的值。

相關文章
相關標籤/搜索