Java 菜鳥教程

Java 流程控制

Java 數組

Java 面向對象(I)

Java 面向對象(II)

Java 面向對象(III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java Map接口

在本教程中,我們將學習Java Map接口及其方法。

Java collections框架的Map接口提供了Map數據結構的功能。

它實現(xiàn)了Collection接口。

map的工作流程

在Java中,Map元素存儲在鍵/值對中。 鍵是與各個值相關聯(lián)的唯一值。

Map集合不能包含重復的鍵。并且,每個鍵都與一個值相關聯(lián)。

Java中的map界面的工作

我們可以使用與它們關聯(lián)的鍵來訪問和修改值。

在上圖中,我們有值:United States,Brazil,和Spain。我們都有相應的鍵:us,br和es。

現(xiàn)在,我們可以使用它們的對應鍵訪問這些值。

注意:Map接口維護3個不同的集合:

  • 鍵集

  • 值集

  • 鍵/值關聯(lián)(Map集合)的集合。

因此,我們可以分別訪問鍵,值和關聯(lián)。

實現(xiàn)Map的類

由于Map是接口,因此無法從中創(chuàng)建對象。

為了使用Map接口的功能,我們可以使用以下類:

這些類在集合框架中定義并實現(xiàn)Map接口。

HashMap,TreeMap,EnumMap,LinkedHashMap和WeakHashMap類實現(xiàn)Java Map接口。

繼承Map的接口

Map接口也由以下這些子接口繼承:

SortedMap,NavigableMap和ConcurrentMap繼承了Java Map接口。

如何使用map?

在Java中,我們必須導入java.util.Map包才能使用Map。導入包后,將按照以下方法創(chuàng)建map。

//使用HashMap類創(chuàng)建Map
Map<Key, Value> numbers = new HashMap<>();

在上面的代碼中,我們創(chuàng)建了一個名為numbers的Map。我們已經使用HashMap類來實現(xiàn)Map接口。

這里,

  • Key - 用于關聯(lián)map中每個元素(值)的唯一標識符

  • Value - map中按鍵關聯(lián)的元素

map方法

Map接口包括Collection接口的所有方法。這是因為Collection是Map的超級接口。

除了Collection接口中可用的方法之外,Map接口還包括以下方法:

  • put(K,V) - 將鍵K和值V的關聯(lián)插入到map中。如果鍵已經存在,則新值將替換舊值。

  • putAll() - 將指定Map集合中的所有條目插入此Map集合中。

  • putIfAbsent(K,V) - 如果鍵K尚未與value關聯(lián),則插入關聯(lián)V。

  • get(K) - 返回與指定鍵K關聯(lián)的值。如果找不到該鍵,則返回null。

  • getOrDefault(K,defaultValue) - 返回與指定鍵K關聯(lián)的值。如果找不到鍵,則返回defaultValue。

  • containsKey(K) - 檢查指定的鍵K是否在map中。

  • containsValue(V) - 檢查指定的值V是否存在于map中。

  • replace(K,V) - 將鍵K的值替換為新的指定值V。

  • replace(K,oldValue,newValue) - 僅當鍵K與值oldValue相關聯(lián)時,才用新值newValue替換鍵K的值。

  • remove(K) - 從鍵K表示的Map中刪除條目。

  • remove(K,V) - 從Map集合中刪除鍵K與值V相關聯(lián)的條目。。

  • keySet() -返回Map集合中存在的所有鍵的集合。

  • values() -返回一組包含在Map集合中的所有值。

  • entrySet() -返回map中存在的所有鍵/值映射的集合。

map接口的實現(xiàn)

1.實現(xiàn)HashMap類

import java.util.Map;
import java.util.HashMap;

class Main {

    public static void main(String[] args) {
        //使用HashMap類創(chuàng)建map
        Map<String, Integer> numbers = new HashMap<>();

        //將元素插入map集合
        numbers.put("One", 1);
        numbers.put("Two", 2);
        System.out.println("Map: " + numbers);

        //map的鍵
        System.out.println("Keys: " + numbers.keySet());

        //map的值
        System.out.println("Values: " + numbers.values());

        //map的條目
        System.out.println("Entries: " + numbers.entrySet());

        //從map集合中刪除元素
        int value = numbers.remove("Two");
        System.out.println("被刪除的值是: " + value);
    }
}

輸出結果

Map: {One=1, Two=2}
Keys: [One, Two]
Values: [1, 2]
Entries: [One=1, Two=2]
被刪除的值是: 2

要了解更多信息HashMap,請訪問Java HashMap。

2.實現(xiàn)TreeMap類

import java.util.Map;
import java.util.TreeMap;

class Main {

    public static void main(String[] args) {
        //使用TreeMap創(chuàng)建map
        Map<String, Integer> values = new TreeMap<>();

        //插入元素到map
        values.put("Second", 2);
        values.put("First", 1);
        System.out.println("使用TreeMap創(chuàng)建map: " + values);

        //替換值
        values.replace("First", 11);
        values.replace("Second", 22);
        System.out.println("新的Map: " + values);

        //從map集合中刪除元素
        int removedValue = values.remove("First");
        System.out.println("被移除的值: " + removedValue);
    }
}

輸出結果

使用TreeMap創(chuàng)建map: {First=1, Second=2}
新的Map: {First=11, Second=22}
被移除的值: 11

要了解更多信息TreeMap,請訪問Java TreeMap。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清