在業務開發中,常需將「星期幾」與英文縮寫互轉。使用 Map 做查表比 if-else 或 switch 更簡潔、易維護。
package cn.itcast.p1.map.test;
import java.util.HashMap;
import java.util.Map;
public class MapTest2 {
public static void main(String[] args) {
String week = getWeek(1); // 取得中文「星期一」
System.out.println(week);
System.out.println(getWeekByMap(week)); // 轉為英文 "Mon"
}
// 使用 Map 查表轉換
public static String getWeekByMap(String week) {
Map<String, String> map = new HashMap<>();
map.put("星期一", "Mon");
map.put("星期二", "Tue");
map.put("星期三", "Wed");
map.put("星期四", "Thu");
map.put("星期五", "Fri");
map.put("星期六", "Sat");
map.put("星期日", "Sun");
return map.get(week);
}
// 傳統陣列/條件判斷方式
public static String getWeek(int i) {
if (i < 1 || i > 7) throw new RuntimeException("沒有對應的星期");
String[] weeks = {"", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
return weeks[i];
}
}
| 方式 | 優點 | 缺點 |
|---|---|---|
| Map 查表 | 擴充性強、程式碼簡潔、O(1) 查找 | 需額外記憶體存儲映射關係 |
| 陣列/判斷 | 無額外物件、效能極高 | 擴充麻煩、硬編碼邏輯 |
建議:固定、少量映射用 Map;極簡場景可用 enum 或陣列。