Java EnumMap 類別:初學者指南

介紹

你好,未來的 Java 程式設計師!今天,我們將進入 Java 的 EnumMap 類別的精彩世界。我知道你可能在想:"EnumMap?這聽起來很複雜!" 但別擔心!在這個教程結束時,你將能夠像專家一樣使用 EnumMap,甚至可能還會有點樂趣。

Java - EnumMap

讓我們從一個簡單的類比開始。想象你為一週的每一天都準備了一個特殊的抽屜來整理你的襪子。這基本上就是 EnumMap 的作用——用於使用列舉常量作為鍵來組織數據。很酷對吧?讓我們深入了解一下!

類別聲明

首先,讓我們看看如何聲明一個 EnumMap:

import java.util.EnumMap;

enum DaysOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

在這個例子中,我們創建了一個使用我們的 DaysOfWeek 列舉作為鍵和 String 值來存儲活動的 EnumMap。DaysOfWeek.class 部分告訴 Java 我們正在使用的列舉作為我們的鍵。

類別構造器

EnumMap 有三個構造器。讓我們看看每一個:

  1. EnumMap(Class keyType)

    EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

    這創建了一個空的 EnumMap,其鍵為指定的列舉類型。

  2. EnumMap(EnumMap<K,? extends V> m)

    EnumMap<DaysOfWeek, String> activitiesCopy = new EnumMap<>(activities);

    這創建了一個與指定的 EnumMap 具有相同鍵類型的 EnumMap,並使用相同的映射(如果有)進行初始化。

  3. EnumMap(Map<K,? extends V> m)

    Map<DaysOfWeek, String> regularMap = new HashMap<>();
    regularMap.put(DaysOfWeek.MONDAY, "Gym");
    EnumMap<DaysOfWeek, String> activitiesFromMap = new EnumMap<>(regularMap);

    這創建了一個從普通 Map 初始化的 EnumMap。

類別方法

現在,讓我們看看 EnumMap 中一些最常用的方法:

方法 描述
put(K key, V value) 將指定的值與指定的鍵相關聯
get(Object key) 返回與指定鍵相關聯的值
remove(Object key) 如果存在,則刪除此鍵的映射
size() 返回鍵-值映射的數量
clear() 從此映射中刪除所有映射
containsKey(Object key) 如果此映射包含指定鍵的映射,則返回 true
containsValue(Object value) 如果此映射將一個或多個鍵映射到指定值,則返回 true

讓我們看看這些方法是如何工作的:

EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

// 添加鍵-值對
activities.put(DaysOfWeek.MONDAY, "Gym");
activities.put(DaysOfWeek.TUESDAY, "Cinema");

// 獲取一個值
String mondayActivity = activities.get(DaysOfWeek.MONDAY);
System.out.println("Monday's activity: " + mondayActivity);

// 檢查是否存在鍵
boolean hasWednesday = activities.containsKey(DaysOfWeek.WEDNESDAY);
System.out.println("Has Wednesday: " + hasWednesday);

// 刪除一個鍵-值對
activities.remove(DaysOfWeek.TUESDAY);

// 獲取大小
int size = activities.size();
System.out.println("Number of activities: " + size);

// 清除映射
activities.clear();

在這個例子中,我們添加不同天的活動,检索值,檢查鍵,刪除條目,最後清除整個映射。這就像整理和重新整理我們的襪子抽屜一樣!

繼承的方法

EnumMap 從其父類繼承方法。以下是一些有用的方法:

方法 從繼承 描述
clone() AbstractMap 創建此映射的淺層副本
equals(Object o) AbstractMap 將指定的對象與此映射進行等價比較
hashCode() AbstractMap 返回此映射的哈希碼值
toString() AbstractMap 返回此映射的字符串表示形式

將鍵-值對添加到 EnumMap 的 Enum,Integer 對示例

現在,讓我們嘗試一些更複雜的東西。我們將創建一個使用列舉作為鍵和整數作為值的 EnumMap:

enum Fruit { APPLE, BANANA, ORANGE, MANGO }

EnumMap<Fruit, Integer> fruitPrices = new EnumMap<>(Fruit.class);

// 添加鍵-值對
fruitPrices.put(Fruit.APPLE, 100);
fruitPrices.put(Fruit.BANANA, 80);
fruitPrices.put(Fruit.ORANGE, 120);
fruitPrices.put(Fruit.MANGO, 150);

// 打印 EnumMap
System.out.println("Fruit Prices: " + fruitPrices);

// 更新一個值
fruitPrices.put(Fruit.BANANA, 90);

// 獲取特定的值
int applePrice = fruitPrices.get(Fruit.APPLE);
System.out.println("Price of Apple: " + applePrice);

// 迭代 EnumMap
for (Map.Entry<Fruit, Integer> entry : fruitPrices.entrySet()) {
System.out.println(entry.getKey() + ": $" + entry.getValue());
}

在這個例子中,我們創建了一個水果價格清單。我們為不同的水果添加價格,更新香蕉的價格,检索蘋果的價格,然後迭代整個映射以打印所有水果的價格。

就是這樣!你剛剛學會了 Java 的 EnumMap 類別的基礎。請記住,熟練掌握需要練習,所以不要害怕嘗試這些概念。誰知道呢?你可能會發現自己用 EnumMap 整理整個生活!(開玩笑的,但它們真的很有用。)

編程愉快,願你的 EnumMap 永遠井井有條!

Credits: Image by storyset