詳解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 版權宣告:本文為博主原創文章,轉載請附上博文連結!