HashMap
- ไม่รักษาลำดับการ insert (Insertion order not preserved)
- ใช้ HashTable ภายใน
- extends AbstractMap, implements Map, Cloneable, Serializable
- เพิ่มใน JDK 1.2
- Overhead ต่ำ
- Performance: O(1) สำหรับ get/put (average)
LinkedHashMap
- รักษาลำดับการ insert (Insertion-order preserved)
- ใช้ HashTable + Doubly Linked List ภายใน
- extends HashMap, implements Map, Cloneable, Serializable
- เพิ่มใน JDK 1.4
- Overhead สูงกว่า (ต้อง maintain linked list)
- Iteration ตามลำดับที่ insert
สรุป
| คุณสมบัติ | HashMap | LinkedHashMap |
|---|---|---|
| ลำดับการ Insert | ไม่รักษา | รักษา (Insertion-order) |
| โครงสร้างภายใน | HashTable | HashTable + Doubly Linked List |
| Extends | AbstractMap | HashMap |
| Overhead | ต่ำ | สูงกว่า |
| ใช้เมื่อ | ไม่ต้องการลำดับ | ต้องการลำดับการ insert |
หมายเหตุ
LinkedHashMap ยังมี Constructor LinkedHashMap(int capacity, float loadFactor, boolean accessOrder) ที่สามารถเรียงตาม Access Order (LRU Cache) ได้