ArrayList 是**有序、可重複、基於數組**的列表,不支持哈希存儲。其 add(index, element) 僅能在指定索引插入,**無法通過鍵(如姓名/電話)直接定位**。
// 鍵:姓名(String) 值:電話(String) 或 Contact 對象
Map<String, String> phoneBook = new HashMap<>();
// 存儲
phoneBook.put("張三", "13800138000");
phoneBook.put("李四", "13900139000");
// 查詢 - O(1) 平均時間複雜度
String phone = phoneBook.get("張三"); // 直接通過姓名獲取
// 遍歷
for (Map.Entry<String, String> entry : phoneBook.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
| 特性 | ArrayList | HashMap |
|---|---|---|
| 查找鍵 | O(n) 遍歷比對 | O(1) 哈希直達 |
| 鍵唯一性 | 允許重複 | 鍵唯一,自動去重 |
| 插入/刪除 | O(n) 可能需移動元素 | O(1) 平均 |
| 適用場景 | 有序列表、允許重複 | 鍵值對映射、快速查找 |
class Contact {
String name;
String phone;
String email;
// getter/setter/toString
}
Map<String, Contact> phoneBook = new HashMap<>();
phoneBook.put("張三", new Contact("張三", "13800138000", "zhangsan@email.com"));
// 查詢返回完整對象
Contact contact = phoneBook.get("張三");
ConcurrentHashMap電話本 = 鍵值映射 = HashMap。ArrayList 只能作為輔助(如按插入順序展示所有聯繫人列表),核心存儲與查找必須用 Map 族類。