Java EnumMap 類別:初學者指南
介紹
你好,未來的 Java 程式設計師!今天,我們將進入 Java 的 EnumMap 類別的精彩世界。我知道你可能在想:"EnumMap?這聽起來很複雜!" 但別擔心!在這個教程結束時,你將能夠像專家一樣使用 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 有三個構造器。讓我們看看每一個:
-
EnumMap(Class
keyType) EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);
這創建了一個空的 EnumMap,其鍵為指定的列舉類型。
-
EnumMap(EnumMap<K,? extends V> m)
EnumMap<DaysOfWeek, String> activitiesCopy = new EnumMap<>(activities);
這創建了一個與指定的 EnumMap 具有相同鍵類型的 EnumMap,並使用相同的映射(如果有)進行初始化。
-
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