集合是一個集合,它可以快速地找到現有的元素。但是,要查看一個元素,需要有要尋找元素的精確副本。這不是一種非常通用的尋找方式,因為在集合中尋找元素總是要遍歷集合。通常,我們知道某些鍵的訊息,並想要尋找與之對應的元素。映射(map)資料結構就是為此而設計的。映射用來存放鍵/值對。如果提供了鍵,就能夠查找到值。它們之間是一一對應關係。
基本映射操作:
Java類別庫為映射提供了兩個通用的實作:HashMap和TreeMap,這兩個類別都實作了Map介面
散列映射(HashMap)對鍵進行散列,樹映射(TreeMap)以鍵的整體順序對元素進行排序,並將其組織成搜尋樹。
雜湊或比較函數只能作用於鍵。與鍵關聯的值不不能進行散列或比較
與集一樣,散列映射比樹映射稍微快一些,所以在不需要按照排列順序訪問鍵的時候,最好選用散列映射
OP->>要進行鍵值存儲,必須使用put方法
OP->>要進行鍵值訪問,必須使用get方法,且只能透過鍵來存取到值
OP->>如果找不到值卻不想傳回一個空對象,則使用getOrDefault(var1,var2),如果找不到值則回傳var2。
鍵必須是唯一的,如果對一對映射呼叫兩次put方法,則後一次呼叫會覆寫前一次呼叫。並且傳回第一次呼叫的結果
OP->>要進行鍵值對的移除,則要使用remove(鍵)的方法
OP->>要取得鍵值對的數量,則要使用size()方法
OP->>要迭代處理每個鍵和值,最好是使用forEach方法,可以向這個方法提供一個lambda表達式,用來依序處理映射中的每一個元素
類似於scores.forEach((k,v)->System.out.println("key=" k ",value=" v));
下面範例程式示範了映射的操作過程,首先將鍵/值對新增至映射中。然後從映射中刪除一個鍵,同時與之對應的值也被刪除了。接下來,修改與某一個鍵對應的值,並呼叫get方法查看這個值。最後,迭代處理條目集。
程式碼:
package Collection.Map; import java.util.*; public class MapTest { public static void main(String[] args) { Map<String,Employee> staff=new HashMap<>(); staff.put("144-25-5464", new Employee("Amy Lee")); staff.put("567-24-2546", new Employee("Harry Hacker")); staff.put("157-62-7935", new Employee("Gary Cooper")); staff.put("456-62-5527", new Employee("Francesca Cruz")); //打印所有成员 System.out.println(staff); //删除某一成员 staff.remove("567-24-2546"); //替代一个成员 staff.put("456-62-5527", new Employee("Francesca Miller")); //查看一个成员 System.out.println(staff.get("157-62-7935")); //遍历映射 staff.forEach((k,v)->System.out.println("key="+k+",value="+v)); } } class Employee{ String name; public Employee(String name) { this.name = name; } public String toString() { return "[name="+name+"]"; } }
執行結果:
#以下是介面Map中常用的幾個方法及其解釋:
V get(Object key)
取得與鍵對應的值;傳回與鍵對應的對象,如果在映射中沒有這個物件則傳回null。鍵可以為null。
default V getOrDefault(Object key,V defaultValue)
取得與鍵關聯的值;傳回與鍵關聯的對象,或如果未在映射中找到這個鍵,則傳回defaultValue。
V put(K key,V value)
#將鍵與對應的值關係插入到映射中。如果這個鍵已經存在,新的物件將取代與這個鍵對應的舊物件。這個方法將傳回鍵對應的舊值。如果這個鍵以前沒有出現過則回傳null。鍵可以為null,但值不能為null。
void putAll(Map extends K,? extends V> entries)
將給定映射中所有項目加入到這個映射中。
boolean containsKey(Object key)
如果對應中已經有這個鍵,則傳回true。
boolean containsValue(Object value)
如果映射中已經有這個值,則回傳true。
default void forEach(BiConsumer super K,? super V> action)
對這個映射中的所有鍵/值套用這個動作。
以下是HashMap類別中的常用方法:
HashMap()
HashMap(int initialCapacity)
#HashMap(int initialCapacity,float loadFactor)
用給定的容量和裝填因子構造一個空散列映射(裝填因子是一個0.0~1.0之間的一個數值。這個數值決定散列表填充百分比。一旦到了這個比例,就要將其再散列到更大的表中)。預設的裝填因子是0.75。
以下是TreeMap類別中常用的方法:
#TreeMap()
為實作Comparable介面的鍵建構一個空的樹映射。
TreeMap(Comparator super K> c)
建構一個樹狀映射,並使用指定的比較器對鍵進行排序。
TreeMap(Map extends K,? extends V> entries)
建構一個樹映射,並將某個映射中的所有條目加入樹映射中。
TreeMap(SortedMap extends K,? extends V> entries)
建構一個樹映射,將某個有序映射中的所有條目添加到樹映射中,並使用與給定的有序映射相同的比較器。
以下是SortedMap介面的一些重要的方法:
#Comparator super K> comparator()
#返回鍵進行排序的比較器。如果鍵是用Comparable介面的comparaTo方法進行比較的,則回傳null。
K firstKey()
K lastKey()
傳回映射中最小元素和最大元素。
php中文網,大量的免費Java入門教學,歡迎線上學習!
以上是java什麼是映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境