Hướng Dẫn Và Ví Dụ Java HashMap - Openplanning
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- HashMap
- HashMap làm việc thế nào?
1. HashMap
HashMap<K,V> là một lớp nằm trong nền tảng tập hợp của Java (Java Collection Framework), và implements interface Map<K,V>. HashMap hỗ trợ đầy đủ tất cả các tính năng được đặc tả trong interface Map bao gồm cả các tính năng tuỳ chọn.HashMap cho phép lưu trữ các cặp khoá và giá trị (key & value), các khoá không thể trùng lặp.public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
- Map
- TreeMap
- WeakHashMap
- LinkedHashMap
- IdentityHashMap
- ConcurrentHashMap
- ConcurrentSkipListMap
- EnumMap
- HashMap chứa các cặp khoá và giá trị.
- Nó có thể có một khóa null và nhiều giá trị null.
- HashMap không duy trì thứ tự với các khoá.
- Nó hoạt động trên kỹ thuật băm (hashing technique). (Xem thêm giải thích về kỹ thuật này ở phần dưới).
- Hướng dẫn và ví dụ Java Map
Xem thêm: Lớp WeakHashMap là một biến thể tiết kiệm bộ nhớ của lớp HashMap. Các ánh xạ không thực sự cần thiết sẽ bị loại bỏ một cách tự động bởi Java Garbage Collector (Trình gom rác của Java)
- Hướng dẫn và ví dụ Java WeakHashMap
2. HashMap làm việc thế nào?
Các nhà thiết kế Java đã sử dụng kỹ thuật băm (hashing technique) cho lớp HashMap để lưu trữ dữ liệu và nâng cao hiệu xuất của nó, và bây giờ chúng ta sẽ xem kỹ thuật này được sử dụng thế nào trong HashMap. Về cơ bản chúng ta phân tích xem điều gì sẽ xẩy ra khi gọi các phương thức HashMap.put(K,V), HashMap.get(K) và HashMap.remove(key).- Tìm hiểu về Java System.identityHashCode, Object.hashCode và Object.equals
static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }Lớp Node<K,V> bao gồm 4 trường (field). Và trường next là một tham chiếu tới đối tượng Node tiếp theo, nó có thể không phải là phần tử tiếp theo trong mảng.static class Node<K,V> implements Map.Entry<K,V> { int hashcode; K key; V value; Node<K,V> next; }
HashMap đảm bảo rằng các Node cùng một hashcode (mã băm) sẽ có tham chiếu liên tiếp nhau, điều này giúp nó nhanh chóng tìm được tất cả các Node có cùng hashcode được chỉ định.HashMap.put(key,value)
Khi gọi phương thức HashMap.put(key,value), HashMap sẽ tìm kiếm các Node với thoả mãn điều kiện node.hashcode == hash(key). Nếu không tìm thấy thì một đối tượng Node mới sẽ được gán vào mảng. (Xem hình dưới)
Ngược lại, HashMap sẽ nhanh chóng xác định được các Node liên tiếp nhau thoả mãn điều kiện node.hashcode == hash(key) và thu hẹp đáng kể phạm vi các Node cần tìm kiếm theo key.- Nếu tìm thấy Node tương ứng với key, giá trị mới sẽ được gán cho Node.value.
- Ngược lại, một đối tượng Node mới sẽ được tạo ra và gán vào mảng (Xem hình dưới).
HashMap.get(key)Khi phương thức HashMap.get(key) được gọi, HashMap sẽ nhanh xác định được các Node liên tiếp nhau thoả mãn điều kiện node.hashcode == hash(key), điều này thu hẹp đáng kể phạm vi các Node cần tìm kiếm theo key. Tiếp theo nó tìm kiếm Node theo key và trả về node.value nếu tìm thấy, ngược lại nó sẽ trả về null.HashMap.remove(key)Kết luận: Phương thức Object.hashcode() trả về hashcode (mã băm) của một đối tượng, giá trị này theo mặc định được tạo ra bởi JVM, và rất hiếm khi trùng lặp. Các lớp con của lớp Object có thể ghi đè (override) phương thức này để trả về hashcode tuỳ biến.HashMap sử dụng kỹ thuật băm (hashing technique) giúp nâng cao hiệu xuất của nó, vì so sánh 2 số bao giờ cũng nhanh hơn so với việc so sánh 2 đối tượng.
Các hướng dẫn Java Collections Framework
- Hướng dẫn và ví dụ Java PriorityBlockingQueue
- Hướng dẫn sử dụng nền tảng tập hợp trong Java (Java Collection Framework)
- Hướng dẫn và ví dụ Java SortedSet
- Hướng dẫn và ví dụ Java List
- Hướng dẫn và ví dụ Java Iterator
- Hướng dẫn và ví dụ Java NavigableSet
- Hướng dẫn và ví dụ Java ListIterator
- Hướng dẫn và ví dụ Java ArrayList
- Hướng dẫn và ví dụ Java CopyOnWriteArrayList
- Hướng dẫn và ví dụ Java LinkedList
- Hướng dẫn và ví dụ Java Set
- Hướng dẫn và ví dụ Java TreeSet
- Hướng dẫn và ví dụ Java CopyOnWriteArraySet
- Hướng dẫn và ví dụ Java Queue
- Hướng dẫn và ví dụ Java Deque
- Hướng dẫn và ví dụ Java IdentityHashMap
- Hướng dẫn và ví dụ Java WeakHashMap
- Hướng dẫn và ví dụ Java Map
- Hướng dẫn và ví dụ Java SortedMap
- Hướng dẫn và ví dụ Java NavigableMap
- Hướng dẫn và ví dụ Java HashMap
- Hướng dẫn và ví dụ Java TreeMap
- Hướng dẫn và ví dụ Java PriorityQueue
- Hướng dẫn và ví dụ Java BlockingQueue
- Hướng dẫn và ví dụ Java ArrayBlockingQueue
- Hướng dẫn và ví dụ Java TransferQueue
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các hướng dẫn Java IO
- Các hướng dẫn Maven
- Các hướng dẫn Java Web Services
- Các hướng dẫn Spring Boot
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java Oracle ADF
- Các hướng dẫn lập trình JavaFX
- Các hướng dẫn lập trình Java SWT
- Các hướng dẫn Gradle

Các hướng dẫn Java Collections Framework
- Hướng dẫn và ví dụ Java PriorityBlockingQueue
- Hướng dẫn sử dụng nền tảng tập hợp trong Java (Java Collection Framework)
- Hướng dẫn và ví dụ Java SortedSet
- Hướng dẫn và ví dụ Java List
- Hướng dẫn và ví dụ Java Iterator
- Hướng dẫn và ví dụ Java NavigableSet
- Hướng dẫn và ví dụ Java ListIterator
- Hướng dẫn và ví dụ Java ArrayList
- Hướng dẫn và ví dụ Java CopyOnWriteArrayList
- Hướng dẫn và ví dụ Java LinkedList
- Hướng dẫn và ví dụ Java Set
- Hướng dẫn và ví dụ Java TreeSet
- Hướng dẫn và ví dụ Java CopyOnWriteArraySet
- Hướng dẫn và ví dụ Java Queue
- Hướng dẫn và ví dụ Java Deque
- Hướng dẫn và ví dụ Java IdentityHashMap
- Hướng dẫn và ví dụ Java WeakHashMap
- Hướng dẫn và ví dụ Java Map
- Hướng dẫn và ví dụ Java SortedMap
- Hướng dẫn và ví dụ Java NavigableMap
- Hướng dẫn và ví dụ Java HashMap
- Hướng dẫn và ví dụ Java TreeMap
- Hướng dẫn và ví dụ Java PriorityQueue
- Hướng dẫn và ví dụ Java BlockingQueue
- Hướng dẫn và ví dụ Java ArrayBlockingQueue
- Hướng dẫn và ví dụ Java TransferQueue
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các hướng dẫn Java IO
- Các hướng dẫn Maven
- Các hướng dẫn Java Web Services
- Các hướng dẫn Spring Boot
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java Oracle ADF
- Các hướng dẫn lập trình JavaFX
- Các hướng dẫn lập trình Java SWT
- Các hướng dẫn Gradle
Các bài viết mới nhất
- Dart Stream Single và Broadcast
- Xử lý lỗi trong Dart Stream
- Hướng dẫn và ví dụ Dart Stream
- So sánh đối tượng trong Dart với thư viện Equatable
- Flutter BloC cho người mới bắt đầu
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Hướng dẫn và ví dụ Flutter Radio
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Tạo Module trong Flutter
- Các hướng dẫn Java Collections Framework
Từ khóa » Ví Dụ Về Hashmap Trong Java
-
Tìm Hiểu HashMap Trong Java Qua Ví Dụ Cụ Thể - NIIT - ICT Hà Nội
-
HashMap Trong Java - Học Lập Trình Java Online - VietTuts
-
HashMap Hoạt động Như Thế Nào Trong Java ??? - Viblo
-
Hash Map Trong Java Hoạt Động Như Thế Nào? - CodeLearn
-
Ví Dụ Về HashMap Trong Java - CodeGym
-
HashMap Trong Java Với Ví Dụ Cụ Thể - Deft Blog
-
HashMap Values() Trong Java Với Ví Dụ Cụ Thể - Deft Blog
-
[Tự Học Java] Hashmap Trong Java »
-
HashMap Trong Java - Freetuts
-
Tất Tần Tật Về HashMap Trong Java Phần 2 - Kipalog
-
# Tất Tần Tật Về HashMap Trong Java (Phần 1) - Kipalog
-
Lớp HashMap Trong Java
-
HashMap Java - TutorialCup
-
HashMap Trong Java Hoạt động Như Thế Nào? - VietMX's Blog