1. 程式人生 > 其它 >(Map集合)Map介面簡介

(Map集合)Map介面簡介

技術標籤:java面向物件程式設計java

在Collection介面之中所儲存的資料全部都只是單個物件,在資料結構裡面除了可以進行單個物件儲存之外,實際上可以進行二元偶物件的儲存(key =value)的形式來儲存,而二元偶物件的核心意義在於通過key獲取對應的value。

在開發裡面:Collection集合儲存資料的目的是為了輸出,Map集合儲存資料的目的是為了進行key的查詢。

Map介面簡介

Map介面是進行二元偶物件儲存的最大父介面,該介面定義如下:

  • public interface Map<K,​V>

該介面為一個獨立的父介面,並且在進行介面物件例項化的時候需要設定Key與Value的型別,也就是說在整體操作的時候需要儲存兩個內容,其中儲存以下一個核心操作方法:

No.方法名稱型別描述
01V put​(K key, V value)普通將指定的value與此對映中的指定key相關聯
02V get​(Object key)普通返回指定key對映到的value
03Set<Map.Entry<K,​V>> entrySet()普通將Map集合轉為Set集合
04boolean containsKey​(Object key)普通如果此key是否存在,存在則返回true
05Set<K> keySet()普通將Map中的key轉為Set集合
06V 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