首頁 Java java教程 Java 中Map 的用法詳解

Java 中Map 的用法詳解

Jan 19, 2017 am 10:40 AM
java map

Map簡介

將鍵映射到值的物件。一個映射不能包含重複的鍵;每個鍵最多只能映射到一個值。此介面取代 Dictionary 類,後者完全是抽象類,而不是一個介面。

 Map 介面提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關係集的形式查看某個映射的內容。映射順序 定義為迭代器在映射的 collection 視圖上傳回其元素的順序。某些映射實作可明確保證其順序,如 TreeMap 類別;其他映射實作則不保證順序,如HashMap 類別。

註:將可變物件用作映射鍵時必須格外小心。當物件是映射中某個鍵時,如果以影響 equals 比較的方式更改了物件的值,則映射的行為將是不確定的。此項禁止的一種特殊情況是不允許某個映射將自身作為一個鍵包含。雖然允許某個映射將自身作為值包 含,但請格外小心:在這樣的映射上 equals 和 hashCode 方法的定義將不再是明確的。

Map 介面:

 Map提供key到value的對應。一個Map中不能包含相同的key,每個key只能對應一個value。 Map介面提供3種集合的視圖,Map的內容可以當作一組key集合,一組value集合,或是一組key-value映射。   

 Hashtable類別     

Hashtable繼承Map接口,且實作一個key-value對應的雜湊表。任何非空(non-null)的物件都可作為key或value。    

新增資料使用put(key,  value),取出資料使用get(key),這兩個基本運算的時間開銷為常數。 Hashtable透過initial  capacity和load  factor兩個參數調整效能。通常缺省的load  factor  0.75較好地實現了時間與空間的平衡。增加load  factor可以節省空間但相應的查找時間將增加,這會影響像get和put這樣的操作。

使用Hashtable的簡單示例如下,將1,2,3放到Hashtable中,他們的key分別是”one”,”two”,”three”:  

Hashtable numbers = new Hashtable(); 
numbers.put(“one”, new Integer(1)); 
numbers.put(“two”, new Integer(2)); 
numbers.put(“three”, new Integer(3));
登入後複製

  要一個要數,例如取出一個數,用對應的key:  

Integer n = (Integer)numbers.get(“two”); 
System.out.println(“two = ” + n);
登入後複製

 由於作為key的物件將透過計算其雜湊函數來確定與之對應的value的位置,因此任何作為key的物件都必須實作hashCode和equals方法。 hashCode和equals方法繼承自根類別Object,如果你用自訂的類別當作key的話,要相當小心,按照雜湊函數的定義,如果兩個物件相同,即obj1.equals(obj2)=true,則它們的hashCode必須相同,但如果兩個物件不同,則它們的hashCode不一定不同,如果兩個不同物件的hashCode相同,這種現象稱為衝突,衝突會導致操作雜湊表的時間開銷增大,所以盡量定義好的hashCode()方法,能加快雜湊表的操作。

如果相同的物件有不同的hashCode,對雜湊表的操作會出現意想不到的結果(期待的get方法傳回null),要避免這種問題,只需要牢記一條:要同時複寫equals方法和hashCode方法,而不要只寫其中一個。

 Hashtable是同步的。  

 HashMap類   

HashMap和Hashtable類似,且不同之處在於HashMap是非同步的,並且允許null,即null  value和null  key。 ,但是將HashMap視為Collection時(values()方法可傳回Collection),其迭代子操作時間開銷和HashMap的容量成比例。因此,如果迭代操作的效能相當重要的話,不要將HashMap的初始化容量設得太高,或是load  factor過低。   

 WeakHashMap類   

WeakHashMap是改良的HashMap,而它對key實行“弱引用”,如果一個key不再被外部所引用,那麼該key就可以被GC回收。

 以上就是Java Map介面的介紹,學習java程式設計的同學可以參考下。

更多Java 中Map 的用法詳解相關文章請關注PHP中文網!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java Map 效能優化揭秘:讓你的資料操作更快速、更有效率 Java Map 效能優化揭秘:讓你的資料操作更快速、更有效率 Feb 20, 2024 am 08:31 AM

JavaMap是Java標準函式庫中常用的資料結構,它以鍵值對的形式儲存資料。 Map的效能對於應用程式的運作效率至關重要,如果Map的效能不佳,可能會導致應用程式運作緩慢,甚至崩潰。 1.選擇合適的Map實作Java提供了多種Map實現,包括HashMap、TreeMap和LinkedHashMap。每種Map實作都有各自的優缺點,在選擇Map實作時,需要根據應用程式的特定需求來選擇合適的實作。 HashMap:HashMap是最常用的Map實現,它使用哈希表來儲存數據,具有較快的插入、刪除和查找速度

Java Map揭秘:實現資料快速存取的技巧與策略 Java Map揭秘:實現資料快速存取的技巧與策略 Feb 19, 2024 pm 06:21 PM

JavaMap是一個基於鍵值對的資料結構,它允許開發人員快速儲存和檢索資料。 Map的鍵可以是任何對象,而值可以是任何類型的資料。 Map中每個鍵最多只能與一個值相關聯,如果對同一個鍵設定多個值,則只會保留最後設定的值。 Map有兩種主要實作:HashMap:使用散列表來儲存鍵值對。 HashMap的效能取決於散列表的實作方式,在大多數情況下,HashMap的效能優於TreeMap。 TreeMap:使用紅黑樹來儲存鍵值對。 TreeMap的效能與HashMap相似,但在某些情況下,TreeMap的效能可

Java Map 的進階技巧:掌握你可能不知道的冷知識,提升你的程式設計能力 Java Map 的進階技巧:掌握你可能不知道的冷知識,提升你的程式設計能力 Feb 19, 2024 pm 12:33 PM

Map介面概述Map介面是Java集合框架中用於儲存鍵值對的資料結構。它允許您使用鍵來查找和檢索關聯的值。 Map介面提供了許多有用的方法,包括put()、get()、remove()、containsKey()、containsValue()、size()、isEmpty()等。 Map的實作Java中最常用的Map實作是HashMap和TreeMap。 HashMap是一個基於哈希表的Map實現,它透過計算鍵的雜湊值來快速找到和檢索值。 TreeMap是基於紅黑樹的Map實現,它以升序或降序對鍵

揭秘Java Map:深入淺出的遍歷指南 揭秘Java Map:深入淺出的遍歷指南 Feb 20, 2024 pm 12:00 PM

1.概覽Map是Java集合框架中的一員,以鍵值對形式儲存元素,允許快速檢索和修改資料。由於其強大的功能和廣泛的應用,掌握Map的遍歷方法是Java程式設計師必備技能。 2.遍歷方法Map提供了多種遍歷方式,每種方法各有優缺點,可依具體需求選擇。 3.keySet()遍歷keySet()方法傳回Map中所有鍵的集合,可透過迭代器或增強型for迴圈遍歷鍵,進而取得對應的值。 //使用keySet()遍歷MapMapmap=newHashMap();map.

Java Map 在企業級應用程式中的應用:探索其在真實專案中的強大作用 Java Map 在企業級應用程式中的應用:探索其在真實專案中的強大作用 Feb 19, 2024 pm 01:27 PM

JavaMap是一種資料結構,它允許您使用鍵值對來儲存資料。鍵是唯一的,而值可以是任何類型的資料。 Map可以透過多種方式進行實現,包括HashMap、TreeMap和ConcurrentHashMap。在企業級應用中,Map可以用於多種目的。例如,您可以使用Map:儲存使用者數據,例如姓名、電子郵件地址和密碼。儲存產品數據,例如名稱、價格和描述。儲存訂單數據,例如客戶姓名、地址和購買的商品。儲存快取數據,例如最近造訪過的網頁或資料庫查詢結果。 Map非常適合儲存複雜的資料結構。例如,您可以使用Ma

掌握Java Map的精髓,進階學習者的必備技能 掌握Java Map的精髓,進階學習者的必備技能 Feb 19, 2024 pm 06:00 PM

JavaMap是一種資料結構,它允許您使用鍵來儲存和檢索值。 Map中的鍵是唯一的,這意味著您不能使用相同的鍵儲存兩個值。 Map中的值可以是任何對象,包括其他Map。 Map在Java中有很多用途。例如,您可以使用Map來儲存使用者ID和密碼、產品ID和價格,或檔案名稱和檔案內容。 Map也非常適合在應用程式中儲存配置設定。 Java中有三種內建的Map實作:HashMap、TreeMap和LinkedHashMap。 HashMap是基於哈希表的Map實現,它是使用最廣泛的Map實作。 TreeMap是基於

Java Map 的擴充與客製化:打造你的專屬資料結構,滿足你的客製化需求 Java Map 的擴充與客製化:打造你的專屬資料結構,滿足你的客製化需求 Feb 19, 2024 pm 09:50 PM

JavaMap是一個非常有用的資料結構,可以用於各種應用場景。但有時,我們可能需要擴展或自訂Map來滿足特定需求,例如新增新的功能、改變遍歷順序或建立自訂序列化器。本文將介紹如何擴充和客製化JavaMap,幫助你打造專屬資料結構,滿足你的客製化需求。 1.擴充JavaMap擴充JavaMap最簡單的方法是建立一個新的類,繼承自java.util.Map介面。這個新類別可以新增新的方法或屬性,也可以覆寫Map介面中的方法。例如,我們可以建立一個新的Map類,並新增一個新的方法來計算鍵值對的總和:publ

探索Java Map的魅力,破解資料處理的難題 探索Java Map的魅力,破解資料處理的難題 Feb 19, 2024 pm 07:03 PM

Map的講解Map是一種資料結構,允許你儲存鍵值對,鍵是唯一的,值可以是任何類型的物件。 Map介面提供了儲存和檢索鍵值對的方法,以及允許你遍歷Map中的鍵值對。 Map的類型Java中Map有幾種不同的實現,最常見的是HashMap、TreeMap和LinkedHashMap。 HashMap:一個基於散列表的Map實現,具有快速查找、插入和刪除的特點,但它不是有序的,這意味著鍵值對的順序在Map中是任意決定的。 TreeMap:一個基於紅黑樹的Map實現,具有快速查找、插入和刪除的特點,並且它是帶有

See all articles