首頁 Java java教程 關於java中Map的九大問題分析

關於java中Map的九大問題分析

Jan 19, 2017 am 10:38 AM
java map

通常來說,Map是一個由鍵值對組成的資料結構,且在集合中每個鍵是唯一的。下面就以K和V來代表鍵和值,來說明java中關於Map的九大問題。
0、將Map轉換為List類型
在java中Map介面提供了三種集合取得方式:Key set,,value set, and key-value set.。它們都可以透過建構方法或addAll()方法來轉換為List型別。下面程式碼就說明如何從Map建構ArrayList:

// key list
List keyList = new ArrayList(map.keySet());
// value list
List valueList = new ArrayList(map.valueSet());
// key-value list
List entryList = new ArrayList(map.entrySet());
登入後複製

1、透過Entry 遍歷Map
java中這種以鍵值對存在的方式稱為Map.Entry。 Map.entrySet()傳回的是一個key-value 集合,這是一個非常有效率的遍歷方式。

for(Entry entry: map.entrySet()) {
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
登入後複製

Iterator 我們也常用到,尤其是在JDK1.5以前 

Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Entry entry = itr.next();
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
登入後複製

2、透過Key來對Map排序
需要對Map的一種進行頻繁的操作,一種方式就是透過比較器(comparator )來實作:

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getKey().compareTo(e2.getKey());
}
});
登入後複製

另一個方法就是透過SortedMap,但必須實作Comparable介面。

SortedMap sortedMap = new TreeMap(new Comparator() {
@Override
public int compare(K k1, K k2) {
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);
登入後複製

3、對value對Map進行排序
這與上一點有些類似,代碼如下: 

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
登入後複製

4、初始化一個static 的常量Map



4、初始化一個static 的常量Map

當你希望創建一個全局Map的時候我們有以下兩種方式,而且是線程安全的。

而在Test1中,我們雖然宣告了map是靜態的,但是在初始化時,我們依然可以改變它的值,就像Test1.map.put(3,"three");
在Test2中,我們透過一個內部類,將其設為不可修改,那麼當我們運行Test2.map.put(3,"three")的時候,它就會拋出一個

UnsupportedOperationException 异常来禁止你修改。
 public class Test1 {
private static final Map map;
static {
map = new HashMap();
map.put(1, "one");
map.put(2, "two");
}
}
public class Test2 {
private static final Map map;
static {
Map aMap = new HashMap();
aMap.put(1, "one");
aMap.put(2, "two");
map = Collections.unmodifiableMap(aMap);
}
}
登入後複製

5、HashMap, TreeMap, and Hashtable之間的不同
在Map介面中,有三種實作:HashMap,TreeMap,Hashtable。
它們之間各有不同,詳細內容請參考《 HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap》一文。


6、Map中的反向查詢
我們在Map加上一個鍵值對後,表示這在Map中鍵和值是一一對應的,一個鍵就是對應一個值。但是有時候我們需要反向查詢,例如透過某一個值來找出它的鍵,這種資料結構稱為bidirectional map,遺憾的是JDK並沒有對其支持。
Apache和Guava 共同提供了這個bidirectional map實現,它在實作中它規定了鍵和值都是必須是1:1的關係。

7、對Map的複製
java提供了許多方法都可以實現對一個Map的複製,但是那些方法不見得會時時同步。簡單說,就是一個Map發生的變化,而複製的那個依然保持原樣。以下是比較有效率的實作方法:
 Map copiedMap = Collections.synchronizedMap(map);
當然還有另一個方法,就是克隆。但是我們的java鼻祖Josh Bloch卻不推薦這種方式,他曾經在一次訪談中說過關於Map克隆的問題:在許多類別中都提供了克隆的方法,因為人們確實需要。但是克隆非常有局限性,而且在很多時候造成了不必要的影響。
8、創建一個空的Map

如果這個map被置為不可用,可以透過以下實作

 map = Collections.emptyMap();

相反,我們會用到的時候,就可以直接

 map = new HashMap( );


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持PHP中文網。

🎜更多關於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 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 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 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 01:27 PM

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

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