首頁  >  文章  >  Java  >  java什麼是映射

java什麼是映射

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-11-12 16:57:1211712瀏覽

java什麼是映射

集合是一個集合,它可以快速地找到現有的元素。但是,要查看一個元素,需要有要尋找元素的精確副本。這不是一種非常通用的尋找方式,因為在集合中尋找元素總是要遍歷集合。通常,我們知道某些鍵的訊息,並想要尋找與之對應的元素。映射(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+"]";
}
}

執行結果:

java什麼是映射

#以下是介面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中文網其他相關文章!

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