詳解Java中Map用法


Map以按鍵/數值對的形式存儲數據,這里要特別說明( Map.Entry,是Map的內部類,它用來描述Map中的鍵/值對)。 Map是一個接口,我們平時多用它的實現類HashMap。

用例如下:

 1   public     static     void     main(String     args[])   
 2     {   
 3         HashMap     hashmap     =     new     HashMap();   
 4         hashmap.put("Item0",     "Value0");   
 5         hashmap.put("Item1",     "Value1");   
 6         hashmap.put("Item2",     "Value2");   
 7         hashmap.put("Item3",     "Value3");   
 8         Set     set     =     hashmap.entrySet();   
 9         Iterator     iterator     =     set.iterator();   
10         while     (iterator.hasNext()   
11       {   
12           Map.Entry     mapentry     =     (Map.Entry)     iterator.next();   
13           System.out.println(mapentry.getkey()     +     "/"     +     mapentry.getValue());   
14       }   
15     }   

注意,這里Map的按鍵必須是唯一的,比如說不能有兩個按鍵都為null。當然也可以這樣,

 1 Map<String, Order> map = new HashMap<String, Order>(); 2 map.put("Order", (Order) obj); 

幾個重要的方法特別說明:

get(Object key);   //獲取給定key對應的值。

put(Object key,Object value);    //該方法會將原先Key所對應的鍵值對覆蓋掉,即可以用該方法修改Map中的值。

containsKey(Object Key);   //是否包含某個元素。通過配合get和put方法一起使用,來實現匹配並修改Map中的元素。

 

詳細理解:

       Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;單獨的Map接口中只有HashMap。

       java.util 中的集合類包含 Java 中某些最常用的類。最常用的集合類是 List 和 Map。 List的具體實現包括 ArrayList和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List適用於按數值索引訪問元素的情形,其中的數據有順序且可以重復(有順序即提供get(i)的索引方法)。而Set中數據無順序且不可以重復。

 

表 1:我們將這 Object的這兩個方法覆蓋,以正確比較 Map 對象的等價性。

equals(Object o) 比較指定對象與此 Map的等價性
hashCode() 返回此 Map的哈希碼

 

 

表 2: Map更新方法:可以更改 Map內容。

clear()            //從 Map中刪除所有映射

remove(Object key)      //從 Map中刪除鍵和關聯的值

put(Object key, Object value)     //將指定值與指定鍵相關聯

clear()       //從 Map中刪除所有映射

putAll(Map t)    //將指定 Map中的所有映射復制到此 map

 

重點處:遍歷Map

       迭代 Map中的元素不存在直接的方法。如果要查詢某個 Map以了解其哪些元素滿足特定查詢,或如果要迭代其所有元素,則你必須首先獲取該 Map的“視圖”。共有三種視圖。

表 3:返回視圖的 Map方法。通過使用這些方法返回的對象,可以遍歷 Map中的元素,也可以刪除 Map中的元素。

entrySet()  //返回 Map中所包含映射的 Set視圖。 Set 中的每個元素都是一個 Map.Entry對象,可以使用 getKey()和 getValue()方法(還有一個 setValue()方法)訪問后者的鍵元素和值元素

keySet()   //返回 Map中所包含鍵的 Set 視圖。刪除 Set中的元素還將刪除 Map中相應的映射(鍵和值)

values()  //返回 map中所包含值的 Collection視圖。刪除 Collection中的元素還將刪除 Map中相應的映射(鍵和值)

所有鍵值對 — 參見 entrySet()

所有鍵     — 參見 keySet()

所有值     — 參見 values()

       前兩個視圖均返回 Set對象,第三個視圖返回 Collection對象。就這兩種情況而言,問題到這里並沒有結束,這是因為您無法直接迭代 Collection對象或 Set對象。要進行迭代,你必須獲得一個 Iterator對象。因此,要迭代 Map的元素相對麻煩,但也沒有更好的辦法。
---------------------
作者:guomutian911
來源:CSDN
原文:https://blog.csdn.net/guomutian911/article/details/45771621
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM