Hash Map Trong Java Hoạt Động Như Thế Nào?

Hiện nay có siêu nhiều phương pháp để tổ chức dữ liệu trong chương trình, điển hình trong số đấy là HashMap. Có mức độ thường ngày càng cao, HashMap đang là lựa chọn của nhiều lập trình viên trong những dự án của họ.

Vậy HashMap thực ra là gì và nó hoạt động như thế nào, hãy cùng mình tìm hiểu qua bài viết này nhé.

HashMap là gì?

Interface Map

Trước lúc nói tới HashMap, chúng ta cần bắt buộc hiểu sơ lược về sự hình thành của nó, hay nói phương pháp khác là sự bắt nguồn của HashMap. Nó xuất phát từ 1 Map interface (java.util.Map), interface này biểu diễn sự ánh xạ giữa 1 trường gọi là “khóa” và 1 trường gọi là “giá trị”, mô hình của nó như sau.

Những tính năng đặc thù của thành phần trong hệ thống Map

  • Có 2 class thực thi quản lý Map interface bao gồm
    • Hashtable: Ko chứa giá trị null, tương trợ đồng bộ nhưng đã lỗi thời.
    • Hashmap: Cho phép chứa giá trị null, ko tương trợ đồng bộ, có đặc điểm đặc thù là thứ tự động lặp (iteration order) ko theo 1 quy tắc nào (random).
  • Class TreeMap thực thi gián tiếp qua những interface mở rộng của interface Map, có đặc điểm đặc thù là tự động động sắp xếp giá trị (theo thứ tự động tự động nhiên).
  • Class LinkedHashMap extends từ class HashMap, có đặc điểm đặc thù là thứ tự động lặp là thứ tự động ban đầu của những Entry (thứ tự động thêm vào).

Xem thêm: Interface là gì, Iteration là gì, Implement và Extends

HashMap hoạt động dựa trên nguyên lý nào?

Hashing là gì? : Hashing là 1 thuật toán có thể vận dụng cho bất kỳ đối tượng nào, và lúc thực hành, hashing sẽ trả về 1 giá trị (kiểu số nguyên) duy nhất đại diện cho đối tượng đấy. Giá trị số nguyên duy nhất này được gọi là mã băm (hash code).

Xem Thêm  Từ Đầu 5 Tiếng Anh Là Gì ? Những Từ Vựng Tiếng Anh Về 5 New Tuyệt Vời

Những thông tin về sinh viên sau thời điểm qua 1 thuật toán Hash

Map interface ko extends bất kỳ interface nào khác từ thư viện Assortment, nên phương pháp hoạt động của nó cũng khác hẳn so có những interface khác trong thư viện Assortment. HashMap lưu trữ dữ liệu theo những cặp (viết tắt là Ok-V). Từng cặp được lưu trữ trong 1 đối tượng gọi là Entry, và Entry này được lưu trong 1 desk tuân theo nguyên tắc Hashing

Chi tiết về đặc điểm chính của HashMap:

  • HashMap ko thể chứa những key(Ok) trùng lặp
  • HashMap cho phép worth(V) = null và/hoặc key(Ok) = null
  • HashMap là 1 bộ sưu tập ko có thứ tự động. Nó ko đảm bảo bất kỳ thứ tự động cụ thể của những phần tử, hay nói dễ hiểu hơn là thứ tự động lúc thông qua của HashMap ko theo 1 nguyên tắc nào.
  • HashMap ko tương trợ đồng bộ hóa. Bạn bắt buộc đồng bộ hóa rõ ràng những sửa đổi đồng thời có HashMap.

Thực hiện cơ bản có HashMap

1. Tạo new

Phương pháp tạo 1 đối tượng HashMap new:

  • Import thư viện: import sentayho.com.vnMap;
  • Tạo 1 HashMap có cú pháp: HashMap<Ok,V> {title}=new HashMap<>();

Dưới đây là 1 số thí dụ

//Tạo new 1 HashMap bao gồm Key(String) và Worth(String) HashMap<String,String> hashmap0=new HashMap<>(); //Tạo new 1 HashMap bao gồm Key(Integer) và Worth(Float) HashMap<Integer,Float> hashMap1 = new HashMap<>(); //Tạo new 1 HashMap bao gồm Key(String) và Worth(Double), có kích thước bằng 10 HashMap<String,Double> hashMap2 = new HashMap<>(10); //Khai báo 1 HashMap được tạo thành từ 1 Assortment khác HashMap<Float, Integer> hashMap4 = new HashMap<>(new TreeMap<>());

2. Thêm Entry(Ok-V) vào HashMap

Phương thức : put(Object key, Object worth);

Thêm 1 cặp giá trị vào HashMap vừa tạo, kiểu dữ liệu của OkV bắt buộc giống có kiểu dữ liệu được khai báo trong HashMap lúc vừa khởi tạo.

sentayho.com.vn(“{Hardware}”, “Hartware”); sentayho.com.vn(“Software program”, “Phần mềm”); sentayho.com.vn(“Faculty”, “Trường Đại Học”); sentayho.com.vn(“Programer”, “Lập Trình Viên”); sentayho.com.vn(“Compile”, “Biên Dịch”); sentayho.com.vn(“Error”, “Lỗi”);

Xem Thêm  Thủ thuật, cách chơi sport nông trại Hay Day (Phần 1)

Kiểu dữ liệu của khóa trong trường hợp này (key:Ok) là String và kiểu dữ liệu của giá trị (worth:V) cũng là String.

3. Sửa Worth của 1 Entry trong HashMap

Phương thức: change(key, newValue);

Dùng để thay đổi đổi giá trị của 1 khóa Ok bất kỳ đã tồn tại bên trong HashMap

//Thêm Entry vào HashMap sentayho.com.vn(“DoanDucTin”, “Class_SE1403”); //Thay đổi đổi worth của Entry có key là “DoanDucTin” sentayho.com.vnace(“DoanDucTin”, “NewClass_SE1401”);

4. Xóa 1 Entry(Ok-V) ra khỏi HashMap

Phương thức: take away(key);

Dùng để xóa 1 Entry ra khỏi HashMap dựa vào khóa Ok

//Thêm Entry vào HashMap sentayho.com.vn(“Error”, “Lỗi”); //Xóa Entry ra khỏi HashMap dựa vào key (Ok) sentayho.com.vnve(“Error”);

5. Hiển thị toàn bộ Entry của HashMap ra màn hình

Phương pháp 1: Dùng EntrySet

Phương thức này sẽ trả về 1 Set bao gồm những Entry có trong HashMap (cú pháp khai báo Set: Set<Map.Entry<Ok,V>> set = sentayho.com.vnySet();)

//Tạo 1 Set lưu những EntrySet của HashMap Set<Map.Entry<String, String>> setHashMap = sentayho.com.vnySet(); //Dùng 1 vòng lặp for để iterator qua toàn bộ Entry vừa được lưu vào Set for (Map.Entry<String,String> i:setHashMap){ sentayho.com.vntln(i.getKey()+” -> “+i.getValue()); }​

In thử HashMap ra màn hình

Có thể dùng thêm sentayho.com.vnes(); để hiển thị toàn bộ giá trị trong HashMap hoặc sentayho.com.vnet(); để hiển thị toàn bộ key trong HashMap

//In toàn bộ key ra màn hình for (String i:hashmap.keySet()){ sentayho.com.vntln(i); } //In toàn bộ giá trị ra màn hình for (String i:hashmap.values()){ sentayho.com.vntln(i); }

In thử HashMap ra màn hình

Phương pháp 2: Dùng Iterator

Iterator là 1 đối tượng có khả năng thông qua qua phần tử, để dùng trước hết chúng ta cần bắt buộc import thư viện sentayho.com.vnator của Java

//Khai báo 1 đối tượng Iterator từ entrySet của hashmap Iterator<Map.Entry<String, String>> iterator = sentayho.com.vnySet().iterator(); //Thông qua qua toàn bộ phần tử trong Iterator để in kết quả ra màn hình whereas (iterator.hasNext()) { sentayho.com.vntln(iterator.subsequent()); }

6. Lấy worth lúc biết key

Phương thức: get(key);

Xem Thêm  Phân loại thai đôi

Trả về 1 đối tượng worth(V) tương ứng tới key(Ok)

//Thêm Entry vào HashMap sentayho.com.vn(“DoanDucTin”, “Class_SE1403”); //Lấy giá trị tương ứng có khóa “DoanDucTin” sentayho.com.vntln(hashmap.get(“DoanDucTin”)); //Console ->:Class_SE1403

1 số phương thức khác

Phương Thức Mô tả sơ lược void clear() Xóa toàn bộ những phần tử của HashMap. Object clone() Trả về 1 bản copy của HashMap. boolean containsKey(Object key) Đánh giá trường hợp HashMap chứa 1 phần tử có khóa được chỉ định. boolean containsValue(Object worth) Đánh giá trường hợp HashMap chứa 1 phần tử có giá trị được chỉ định. boolean isEmpty() Đánh giá HashMap trống hay ko. void putAll(Map t) Sao chép những phần tử của Map vào HashMap. int measurement() Trả về số phần tử đang tồn tại bên trong HashMap.

Ứng dụng của hashMap

  • Dùng làm cho từ điển:

HashMap dùng trường Key để lưu từ Tiếng Anh và trường giá trị là nghĩa của từ đấy trong Tiếng Việt

  • Bên cạnh ra, HashMap còn được ứng dụng nhiều trong những chương trình và đặc biệt là ứng dụng trong quản lý những đối tượng mà đối tượng đấy dùng 1 khóa (nhằm phần đích định danh) và trả về 1 thông tin về đối tượng đấy

Tổng Kết

Trong bài này, mình đã giới thiệu cho người sử dụng những đặc điểm, phương pháp hoạt động cũng như những phương thức thường dùng trong HashMap, hello vọng sau bài viết người sử dụng có thể có thêm được nhiều tri thức new. HashMap hiện nay đang được nhiều nhà tuyển dụng dùng để đặt những câu hỏi phỏng vấn nhằm đánh giá trình độ chuyên môn và sự hiểu biết của bạn, vì vậy bên cạnh HashMap ra, người sử dụng nên tìm hiểu và tổng hợp cho chính bản thân mình nhiều tri thức nhất có thể nhé, chúc người sử dụng thành công.

Mission mẫu dùng HashMap của mình (Từ Điển): tải về tại đây