HashMap trong selen

Tram Ho

Lớp Java HashMap thực thi Map interface bằng cách sử dụng hastable(hàm băm), nó kế thừa từ lớp AbstractMap và thực thi Map interface

  • Key-Pair : một HashMap chứa các giá trị dựa trên key(khóa)
  • unique(duy nhất): Chỉ chứa các khóa là duy nhất, và có thể có các giá trị trùng lặp
  • Null value(giá trị null) : có thể có 1 khóa null và nhiều giá trị null
  • Random order : duy trì không có thứ tự, vì vậy bạn không nên truy cập bằng chỉ mục. Và thứ tự có thể thay đổi theo thời gian.
  • Not Thread Safe(không phải luồng an toàn) : Java HashMap không phải luồng an toàn, cho môi trường đa luồng thì bạn nên sử dụng lớp ConcurrentHashMap để thay thế HashMap
  • Constant Time : HashMap cung cấp constant time cho các hoạt động như phương thức get() và put ()
  • Capacity (dung lượng) : dung lượng ban đầu mặc định của HashMap là 16

Tạo một HashMap

Bên dưới là constructor của HashMap

Constructors của HashMap

HashMap có 4 loại constructor, những constuctors được thiết kế để cung cấp các lựa chọn cho lập trình viên

  1. HashMap không có tham số : nó là constructor mặc định được tạo như một instance của HashMap với dung lượng ban đầu là 16 và hệ số tải là 0.75

  1. HashMap với tham số là dung lượng : constructor HashMap này tạo ra một thể hiện HashMap với một dung lượng ban đầu đã được xác định và với hệ số tải mặc định là 0.75

  1. HashMap với tham số là dung lượng và hệ số tải : constructor này tạo ra một HashMap instance với dung lượng và hệ số tải đã được xác định từ ban đầu

  1. HashMap với tham số là interface Map :

Các phương thức của HashMap trong java

  • boolean isEmpty()
  • Object put(Object key, Object value)
  • int size()
  • get(Object key)
  • void clear()
  • boolean containsKey(Object key)
  • boolean containsValue(Object value)
  • Object clone()
  • Set entrySet()
  • Set keySet()
  • Collection values()

Các phương thức được giới thiệu của HashMap trong Java 8

  • computeIfAbsent()
  • computeIfPresent
  • compute
  • forEach
  • getOrDefault
  • merge
  • putIfAbsent
  • remove
  • replace
  • boolean replace(K key, V oldValue, V newValue)
  • replaceAll

Ví dụ chương trình sử dụng HashMap

boolean isEmpty()

Kiểm tra xem map có empty hay không? Ở đây không có cặp key và value nào , sau khi chạy trong hàm này sẽ trả về true hay false ?

Output of isEmpty()

Object put(Object key, Object value)

Tạo một key với giá trị tương ứng trong HashMap, nếu map chứa key giống nhau với giá trị khác nhau thì giá trị cũ sẽ thay thế bằng giá trị mới

The output of put()

get(Object key)

Trả về giá trị được map với key đã chỉ định và trả về null nếu không map với key nào

Output of get() method

int size()

Trả về số lượng các cặp key-value trong HashMap

Output of size()

remove(Object key)

Xóa khóa cùng với giá trị của nó

output sau khi xóa element

values()

values() phương thức trả về tất cả các giá trị có trong Map

Output of keySet() and values()

Hiển thị các phần tử có trong HashMap.

Để hiển thị các phần tử có trong HashMap, chúng ta có các cách như sau:

Sử dụng vòng lặp for cải tiến.

output

Ngoài ra, kể từ Java 8 trở đi chúng ta có thể lấy toàn bộ các entry trong HashMap bằng cách sử dụng forEach() như sau:

Lấy toàn bộ key của HashMap.

Để lấy toàn bộ key của HashMap, Java cung cấp cho chúng ta phương thức keySet(). Phương thức này sẽ trả về 1 Set bao gồm các key có trong HashMap:

output :

Lấy toàn bộ value của HashMap.

Để lấy toàn bộ value của HashMap, Java cung cấp cho chúng ta phương thức values(). Phương thức này sẽ trả về 1 tập hợp bao gồm các value có trong HashMap:

output :

Tham khảo bài viết : https://chercher.tech/java/hashmap

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo