Presentation is loading. Please wait.

Presentation is loading. Please wait.

TÌM HIỂU KIỂU CẤU TRÚC HASHMAP TRONG NGÔN NGỮ LẬP TRÌNH JAVA

Similar presentations


Presentation on theme: "TÌM HIỂU KIỂU CẤU TRÚC HASHMAP TRONG NGÔN NGỮ LẬP TRÌNH JAVA"— Presentation transcript:

1 TÌM HIỂU KIỂU CẤU TRÚC HASHMAP TRONG NGÔN NGỮ LẬP TRÌNH JAVA
GVHD: Trần Văn Thọ Nhóm thực hiện: 7

2 NỘI DUNG 01 02 CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
CÀI ĐẶT GIẢI THUẬT 02

3 CHƯƠNG 1: CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
1.1 Cấu tạo của HashMap 1.2 Cơ chế hoạt động 1.3 Ví dụ

4 CHƯƠNG 1: CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
1.1 Cấu tạo của HashMap HashMap lưu trữ dữ liệu ở dạng các cặp key-value (khóa-giá trị). Mỗi cặp key-value được lưu trữ trong một đối tượng của lớp Entry<K, V>. Lớp học bên trong này có bốn trường: key (khóa), value (giá trị), next (phần tử kế tiếp) và hash (giá trị băm). key: lưu khóa của một phần tử và giá trị khóa này là final. value: lưu giá trị của phần tử. next: lưu giữ con trỏ tới cặp khóa-giá trị tiếp theo. Thuộc tính này làm cho các cặp khóa-giá trị được lưu trữ dưới dạng một danh sách liên kết. hash: lưu giữ mã băm (hashcode) của khóa.

5 CHƯƠNG 1: CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
1.1 Cấu tạo của HashMap Những điểm chính cần lưu ý về Hashmap trong Java: HashMap không thể chứa các key trùng lặp. Java HashMap cho phép các giá trị null và key null. HashMap là một tập hợp không có thứ tự. Nó không đảm bảo bất kỳ thứ tự cụ thể của các phần tử. Java HashMap không phải thread-safe. Bạn phải đồng bộ hóa rõ ràng các sửa đổi đồng thời với HashMap.

6 CHƯƠNG 1: CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
Toàn bộ cấu trúc dữ liệu HashMap dựa trên nguyên tắc Hashing. Để hiểu về Hashing, chúng ta cần nắm được 3 khái niệm: Hash function, hash value và bucket. Hash function, hay còn gọi là hàm băm, là một hàm mà khi ta lấy đầu vào là một giá trị bất kỳ thì ở đầu ra, hash fuction sẽ cho ta một dãy code - được gọi là hash value. Mỗi đầu vào chỉ có duy nhất một hash value. Bucket là nơi mà chúng ta lưu trữ các cặp key-value. (Map vốn là một cấu trúc dữ liệu sử dụng key-value để lưu trữ và truy xuất các phần tử). Trong HashMap, bucket dùng LinkedList để lưu trữ (LinkedList ở đây được implement riêng trong HashMap, nó khác với LinkedList trong gói java.util.LinkedList).

7 CHƯƠNG 1: CẤU TẠO VÀ CƠ CHẾ HOẠT ĐỘNG CỦA HASHMAP
1.3 Ví dụ minh họa import java.util.HashMap; import java.util.Map; public class CreateHashMapExample {     public static void main(String[] args) {         // Tạo một HashMap         Map<String, Integer> numberMapping = new HashMap<>();         // Thêm giá Key-Value vào HashMap         numberMapping.put("One", 1);         numberMapping.put("Two", 2);         numberMapping.put("Three", 3);         // Thêm cặp Key-Value chỉ khi key không tồn tại trong HashMap         // hoặc được ánh xạ tới null         numberMapping.putIfAbsent("Four", 4);         System.out.println(numberMapping);     } } Kết quả nhận được là: {One=1, Four=4, Two=2, Three=3}

8 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
2.1 Khởi tạo HashMap 2.2 Thêm, xóa phần tử trong HashMap 2.3 Tìm kiếm thông tin trong HashMap 2.4 Duyệt các phần tử HashMap

9 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
2.1 Khởi tạo HashMap Sau đây là cách để Khai báo HashMap:

10 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
2.2 Thêm, xóa phần tử trong HashMap Thêm phần tử trong HashMap Để thêm một phần tử vào HashMap, chúng ta có thể sử dụng phương thức put(). Tuy nhiên các bạn lưu ý rằng thứ tự thêm vào không được giữ lại trong Hashmap. Nội bộ bên trong HashMap, mỗi phần tử sẽ có một mã băm riêng, HashMap lập chỉ mục cho các phần tử dựa vào mã băm này, về cơ bản mã băm này rất khó trùng cho phép việc lập chỉ mục hiệu quả hơn. Bây giờ chúng ta có thể tạo HashMap với Key là String và Value là Product.

11 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
Xóa phần tử trong HashMap Để xóa một phần tử khỏi HashMap, chúng ta có thể sử dụng phương thức remove (). Phương thức này nhận giá trị key và xóa phần tử trong HashMap có giá trị key tương ứng với key được truyền vào.

12 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
2.3 Tìm kiếm thông tin trong HashMap Có hai cách tìm kiếm thông tin trong hash map ta có thể tìm kiếm thông qua key (khóa) hoặc value (dữ liệu). Tìm kiếm thông tin bằng key có độ phức tạp khá ít là O(1), bằng cách sử dụng giao thức containsKey(), cách cài đặt: productsByName.containsKey("key"); Tìm kiếm thông tin bằng value có độ phức tạp là O(n) do phải duyệt qua tất cả phần tử, tìm kiếm bằng value sử dụng giao thức containsvalue(), cách cài đặt: productsByName.containsValue(value); Ngoài ra java còn cung cấp cho chúng ta một cách tìm kiếm thông tin nữa đó chính là sử dụng get() cách này sẽ trả về value tương ứng với key của chúng ta. Nếu không tìm thấy key đó thì hàm này sẽ trả về giá trị null.

13 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
VD: Trong ví dụ này tên của HashMap sẽ là hashMap hashMap.put(“key”,”value”); System.out.println( “key:” + hashMap.get(“key”)); System.out.println( “key_1:” + hashMap.get(“key”)); Nếu trường hợp key có tồn tại trong hash map thì key này sẽ trả về value tương ứng với key đó, ngược lại nếu key không tồn tại trong hash map thì trả về null. Dữ liệu sẽ được xuất ra màn hình như sau: key:value key_1:null vì dữ liệu và khóa key_1 chưa được đưa vào hash map nên nó sẽ mang giá trị null.

14 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
2.4 Duyệt các phần tử HashMap Để duyệt các phần tử trong hashmap có những cách sau: Sử dụng entryset: Để lấy toàn bộ các entry của HashMap (1 entry sẽ bao gồm key và value tương ứng với key đó), Java cung cấp cho chúng ta phương thức entrySet(). Phương thức này sẽ trả về 1 Set bao gồm các entry có trong HashMap. Ví dụ dưới đây sẽ minh họa cách sử dụng phương thức này.

15 CHƯƠNG 2: CÀI ĐẶT GIẢI THUẬT
Sử dụng Iterator: Iterator là một đối tượng có khả năng duyệt qua phần tử, để sử dụng trước hết chúng ta cần phải import thư viện java.util.Iterator của Java Ví dụ:

16 THANK YOU


Download ppt "TÌM HIỂU KIỂU CẤU TRÚC HASHMAP TRONG NGÔN NGỮ LẬP TRÌNH JAVA"

Similar presentations


Ads by Google