(Map集合)Map介面簡介
技術標籤:java面向物件程式設計java
在Collection介面之中所儲存的資料全部都只是單個物件,在資料結構裡面除了可以進行單個物件儲存之外,實際上可以進行二元偶物件的儲存(key =value)的形式來儲存,而二元偶物件的核心意義在於通過key獲取對應的value。
在開發裡面:Collection集合儲存資料的目的是為了輸出,Map集合儲存資料的目的是為了進行key的查詢。
Map介面簡介
Map介面是進行二元偶物件儲存的最大父介面,該介面定義如下:
- public interface Map<K,V>
該介面為一個獨立的父介面,並且在進行介面物件例項化的時候需要設定Key與Value的型別,也就是說在整體操作的時候需要儲存兩個內容,其中儲存以下一個核心操作方法:
No. | 方法名稱 | 型別 | 描述 |
01 | V put(K key, V value) | 普通 | 將指定的value與此對映中的指定key相關聯 |
02 | V get(Object key) | 普通 | 返回指定key對映到的value |
03 | Set<Map.Entry<K,V>> entrySet() | 普通 | 將Map集合轉為Set集合 |
04 | boolean containsKey(Object key) | 普通 | 如果此key是否存在,存在則返回true |
05 | Set<K> keySet() | 普通 | 將Map中的key轉為Set集合 |
06 | V remove(Object key) | 普通 | 根據key刪除指定資料 |
從JDK1.9之後Map接口裡面也擴充了一些靜態方法供使用者使用 。
範例:觀察Map集合的特點
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
Map<String,Integer> map = Map.of("one",1,"two",2,"one",100);
System.out.println(map);
}
}
Exception in thread "main" java.lang.IllegalArgumentException: duplicate key: one(非法引數異常,key重複)
at java.base/java.util.ImmutableCollections$MapN.<init>(ImmutableCollections.java:1022)
at java.base/java.util.Map.of(Map.java:1349)
at MapDemo.main(MapDemo.java:8)
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
Map<String,Integer> map = Map.of("one",1,"two",2,null,20);
System.out.println(map);
}
}
Exception in thread "main" java.lang.NullPointerException(空指標異常)
at java.base/java.util.Objects.requireNonNull(Objects.java:208)
at java.base/java.util.ImmutableCollections$MapN.<init>(ImmutableCollections.java:1017)
at java.base/java.util.Map.of(Map.java:1349)
at MapDemo.main(MapDemo.java:7)
在Map集合之中資料的儲存就是按照“key = value”的形式儲存的,並且使用of()方法的時候裡面的資料是不允許重複的,同時也不能為null,否則會報異常。
對於現在見到的of()方法嚴格意義上來講並不是Map集合的標準用法,因為正常的開發之中需要通過Map集合的子類進行介面物件的例項化而常用的子類有:
- HashMap
- HashTable
- TreeMap
- LinkedHashMap