您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java集合類之Map集合的特點及使用方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java集合類之Map集合的特點及使用方法是什么”吧!
java.util
接口 Map<K,V>
類型參數:
K - 此映射所維護的鍵的類型
V - 映射值的類型
public interface Map<K,V>
將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。
此接口取代 Dictionary 類,后者完全是一個抽象類,而不是一個接口。
Map 是一種鍵-值對(key-value)集合,Map 集合中的每一個元素都包含一個鍵對象和一個值對象。其中,鍵對象不允許重復,而值對象可以重復,并且值對象還可以是 Map 類型的,就像數組中的元素還可以是數組一樣。
Map 接口主要有兩個實現類:HashMap 類和 TreeMap 類。其中,HashMap 類按哈希算法來存取鍵對象,而 TreeMap 類可以對鍵對象進行排序。
Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關系集的形式查看某個映射的內容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現可明確保證其順序,如 TreeMap 類;另一些映射實現則不保證順序,如HashMap 類。
注:將可變對象用作映射鍵時必須格外小心。當對象是映射中某個鍵時,如果以影響 equals 比較的方式更改了對象的值,則映射的行為將是不確定的。此項禁止的一種特殊情況是不允許某個映射將自身作為一個鍵包含。雖然允許某個映射將自身作為值包含,但請格外小心:在這樣的映射上equals 和 hashCode 方法的定義將不再是明確的。
方法 | 說明 |
---|---|
boolean equals(Object o) | 比較指定的對象與此映射是否相等 |
V get(Object key) | 返回指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則返回 null |
V put(K key, V value) | 將指定的值與此映射中的指定鍵關聯(可選操作) |
void clear() | 從此映射中移除所有映射關系(可選操作) |
boolean containsKey(Object key) | 如果此映射包含指定鍵的映射關系,則返回 true |
boolean containsValue(Object value) | 如果此映射將一個或多個鍵映射到指定值,則返回 true |
boolean isEmpty() | 如果此映射未包含鍵-值映射關系,則返回 true |
V get(Object key) | 返回指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則返回 null |
Set keySet() | 返回此映射中包含的鍵的 Set 視圖 |
Set<Map.Entry<K,V>> entrySet() | 返回此映射中包含的映射關系的 Set 視圖 |
代碼示例:
import java.util.*; public class CollectionsDemo { public static void main(String[] args) { Map m1 = new HashMap(); m1.put("Zara", "8"); m1.put("Mahnaz", "31"); m1.put("Ayan", "12"); m1.put("Daisy", "14"); System.out.println(); System.out.println(" Map Elements"); System.out.print("\t" + m1); } }
package com.ithmm_01; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class MapDemo01 { public static void main(String[] args) { //創建集合對象 Map<String,String> map = new HashMap<String,String>(); //往集合添加元素 map.put("2101","zhangxiaohau"); map.put("2102","wangxiaoer"); map.put("2103","liuyidao"); //根據鍵刪除對應元素 // System.out.println(map.remove("2102"));//wangxiaoer // System.out.println(map.remove("2105"));//null //移除所有鍵值對元素 //map.clear();//{} // boolean containsKey(Object key) // 如果此映射包含指定鍵的映射關系,則返回 true。 System.out.println(map.containsKey("2101"));//true // boolean containsValue(Object value) // 如果此映射將一個或多個鍵映射到指定值,則返回 true。 System.out.println(map.containsValue("liuyidao"));//true //boolean isEmpty() |如果此映射未包含鍵-值映射關系,則返回 true。 System.out.println(map.isEmpty());//false System.out.println(map.size());//3 // V get(Object key) 返回指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則返回 null。 System.out.println(map.get("2101"));//zhangxiaohau System.out.println(map.get("2102")); //wangxiaoer // Set keySet() 返回此映射中包含的鍵的 Set 視圖。 System.out.println(map.keySet());//3[2103, 2102, 2101] // Collection<V> values() // 返回此映射中包含的值的 Collection 視圖。 Collection<String> values = map.values(); for(String value : values){ System.out.println(value);//liuyidao wangxiaoer zhangxiaohau } //輸出集合對象 System.out.println(map);// } }
總結:Map 接口中鍵和值一一映射. 可以通過鍵來獲取值。
給定一個鍵和一個值,你可以將該值存儲在一個 Map 對象。之后,你可以通過鍵來訪問對應的值。
當訪問的值不存在的時候,方法就會拋出一個 NoSuchElementException 異常。
當對象的類型和 Map 里元素類型不兼容的時候,就會拋出一個 ClassCastException 異常。
當在不允許使用 Null 對象的 Map 中使用 Null 對象,會拋出一個 NullPointerException 異常。
當嘗試修改一個只讀的 Map 時,會拋出一個 UnsupportedOperationException 異常。
方法一:
操作:
獲取所有鍵的集合,用keySet()方法實現
遍歷鍵的集合,獲取到每一個鍵,用增強for實現
根據鍵去找值。用get(Object key)方法實現
代碼示例:
package com.ithmm_01; /** * - 獲取所有鍵的集合,用keySet()方法實現 * - 遍歷鍵的集合,獲取到每一個鍵,用增強for實現 * - 根據鍵去找值。用get(Object key)方法實現 */ import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapDemo02 { public static void main(String[] args) { //創建集合對象 Map<String, String> map = new HashMap<String, String>(); //往集合添加元素 map.put("2101", "zhangxiaohau"); map.put("2102", "wangxiaoer"); map.put("2103", "liuyidao"); //獲取所有鍵的集合,用keySet()方法實現 Set<String> keySet = map.keySet(); //遍歷鍵的集合,獲取到每一個鍵,用增強for實現 for (String key :keySet){ // 根據鍵去找值。用get(Object key)方法實現 String value = map.get(key); System.out.println(key + "," +value); } } }
控制臺輸出:
2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau
方法二:
操作:
1.獲取所有鍵值對對象的集合
Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射關系的 Set 視圖。
2.遍歷鍵值對對象的集合,得到每一個鍵值對對象
用增強for實現,得到每一個Map.Entry
3.根據鍵值對對象獲取鍵和值
用getKey()方法得到鍵
用getValue()方法得到值
代碼示例:
package com.ithmm_01; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapDemo03 { public static void main(String[] args) { //創建集合對象 Map<String, String> map = new HashMap<String, String>(); //往集合添加元素 map.put("2101", "zhangxiaohau"); map.put("2102", "wangxiaoer"); map.put("2103", "liuyidao"); //獲取所有鍵值對對象的集合 Set<Map.Entry<String, String>> entrySet = map.entrySet(); //遍歷鍵值對對象的集合,得到每一個鍵值對對象 //用增強for實現,得到每一個Map.Entry for (Map.Entry<String, String> ss : entrySet) { //根據鍵值對對象獲取鍵和值 String key = ss.getKey(); String value = ss.getValue(); System.out.println(key + "," + value); } } }
控制臺輸出:
2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau
感謝各位的閱讀,以上就是“Java集合類之Map集合的特點及使用方法是什么”的內容了,經過本文的學習后,相信大家對Java集合類之Map集合的特點及使用方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。