一、核心概念
1. 基本定義
- Python字典(
dict
) :動態類型鍵值對集合,語法簡潔,支持快速查找。 - Java Map:接口,常用實現類如
HashMap
、LinkedHashMap
,需聲明鍵值類型(泛型)。
2. 核心特性
特性 | Python字典 | Java HashMap |
---|---|---|
鍵唯一性 | ? | ? |
順序保證 | ?(Python 3.7+) | ?(需用 LinkedHashMap ) |
線程安全 | ? | ?(需用 ConcurrentHashMap ) |
空鍵值支持 | 鍵不可為None | ?(允許null 鍵值) |
二、常用操作對比
1. 創建與初始化
# Python
d = {"name": "Alice", "age": 30}
// Java
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
2. 增刪改查
操作 | Python語法 | Java方法 |
---|---|---|
添加/更新鍵值 | d["key"] = value | map.put("key", value) |
獲取值 | d.get("key", default) | map.getOrDefault("key", default) |
刪除鍵值對 | del d["key"] | map.remove("key") |
檢查鍵是否存在 | "key" in d | map.containsKey("key") |
3. 遍歷操作
# Python
for key, value in d.items():print(key, value)
// Java(增強for循環)
for (Map.Entry<String, Integer> entry : ages.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());
}// Lambda表達式(Java 8+)
ages.forEach((k, v) -> System.out.println(k + " -> " + v));
三、Java Map實現類選型
實現類 | 特點 | 適用場景 |
---|---|---|
HashMap | 無序,查找高效(O(1)) | 常規鍵值存儲 |
LinkedHashMap | 保持插入順序或訪問順序 | 需要有序遍歷 |
TreeMap | 按鍵自然排序(或自定義Comparator) | 需要排序的鍵值對 |
ConcurrentHashMap | 線程安全,高并發優化 | 多線程共享數據 |
四、進階用法
1. 合并字典
Map<String, Integer> map1 = new HashMap<>();
Map<String, Integer> map2 = new HashMap<>();
map1.putAll(map2); // 合并map2到map1
2. 計算大小與判空
int size = map.size(); // 鍵值對數量
boolean isEmpty = map.isEmpty();
3. 默認值處理
// 若鍵不存在,返回默認值0
int age = map.getOrDefault("Unknown", 0);
五、注意事項
-
泛型類型約束
Java需明確聲明鍵值類型,如Map<String, Integer>
,而Python無類型限制。 -
空鍵值風險
Java允許null
鍵值,但需避免誤用:map.put(null, 100); // 允許,但可能引發NPE
-
線程安全
多線程環境下優先使用ConcurrentHashMap
或Collections.synchronizedMap()
。 -
性能優化
- 初始化時指定容量:
new HashMap<>(100)
減少擴容開銷。 - 頻繁遍歷時優先用
LinkedHashMap
。
- 初始化時指定容量:
六、總結
- 核心等價關系:Python字典 ≈ Java的
HashMap
。 - 選擇建議:
- 常規場景用
HashMap
。 - 有序需求用
LinkedHashMap
。 - 并發場景用
ConcurrentHashMap
。
- 常規場景用
- 語法差異:Java代碼更冗長,但類型安全和性能優化更強。