在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中存值問題,當一個鍵值對應存一個值後,再次操做對應的鍵存值,則會清空本來的鍵對應的值,存入新的值。