<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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 異常。
方法一:
操作:
程式碼範例:
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集合內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45