Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục tìm hiểu về Hashmap trong Java. Ở bài này, mình sẽ đi qua những nội dung như sau:
Nội dung
- 1. HashMap trong Java là gì?
- 2. Khai báo HashMap
- 3. Thêm dữ liệu vào trong HashMap
- 4. Tạo HashMap từ các Map khác
- 5. Lấy dữ liệu value trong HashMap khi biết được key
- 6. Thay đổi giá trị phần tử trong HashMap
- 7. Xóa phần tử trong HashMap
- 8. Sao chép HashMap
- 9. Duyệt các phần tử trong HashMap
- 10. Lấy toàn bộ key của HashMap
- 11. Lấy toàn bộ value của HashMap
- 12. Kết
1. HashMap trong Java là gì?
Lớp HashMap trong java là một lớp kế thừa lớp AbstractMap và triển khai của Map Interface trong Collections Framework nên nó sẽ có một vài đặc điểm và phương thức tương đồng với Map. HashMap được sử dụng để lưu trữ các phần tử dưới dạng “key/value“. Key và value là kiểu dữ liệu bất kỳ, và bạn có thể try cập các giá trị của HasMap bằng một key cụ thể.
Những điểm quan trọng về lớp HashMap trong java là:
- HashMap lưu trữ dữ liệu dưới dạng cặp key và value.
- Nó chứa các key duy nhất.
- Nó có thể có 1 key là null và nhiều giá trị null.
- Nó duy trì các phần tử KHÔNG theo thứ tự.
Trong đó
- khóa – mã định danh duy nhất được liên kết với từng giá trị
- giá trị – dữ liệu thực tế được truy cập bằng khóa
2. Khai báo HashMap
Để khai báo một HashMap
, chúng ta cần phải import gói thư viện java.util.HashMap
của Java. Khi chúng ta đã import xong, sau đây là cách chúng ta có thể tạo các hashmap trong Java.
HashMap<typeKey,typeValue> name = new HashMap<typeKey,typeValue>()
Trong đó:
- typeKey là kiểu dữ liệu của khóa trong HashMap
- typeValue là kiểu dữ liệu của giá trị tương ứng với khóa trong HashMap
- name là tên của đối tượng HashMap cần khởi tạo
Hãy xem một ví dụ đơn giản về việc khai báo (khởi tạo) một lớp HashMap() để lưu trữ cặp khóa và giá trị. Sau đó chúng ta sẽ đi kiểm tra xem HashMap() vừa khởi tạo có là rỗng hay không? Và hiển thị ra các phần tử có trong lớp HashMap() vừa được khởi tạo.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
//Khoi tao mot HashMap co Key kieu Integer, Value kieu String
HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
//Kiem tra HashMap vua tao co rong hay khong?
boolean result = hashMap.isEmpty();
System.out.println("HashMap vua khoi tao co rong hay khong? \n" + result);
//Kiem tra phan tu trong HashMap
System.out.println("Phan tu co trong HashMap la: \n" + hashMap);
}
}
Kết quả:
HashMap vua khoi tao co rong hay khong?
true
Phan tu co trong HashMap la:
{}
3. Thêm dữ liệu vào trong HashMap
Để thêm dữ liệu vào trong HashMap
, Java cung cấp cho chúng ta phương thức put()
.
Cú pháp:
put(key, value);
Trong đó: key
là khóa, value
là giá trị. Mỗi key
sẽ tương ứng với một value
cụ thể.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Creating a hashmap of even numbers
HashMap<String, Integer> evenNumbers = new HashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("HashMap1: " + evenNumbers);
}
}
Kết quả:
HashMap1: {Four=4, Two=2}
4. Tạo HashMap từ các Map khác
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Creating a hashmap of even numbers
HashMap<String, Integer> evenNumbers = new HashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("HashMap1: " + evenNumbers);
// Creating a hash map from other hashmap
HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
numbers.put("Three", 3);
System.out.println("HashMap2: " + numbers);
}
}
Kết quả:
HashMap1: {Four=4, Two=2}
HashMap2: {Two=2, Three=3, Four=4}
5. Lấy dữ liệu value trong HashMap khi biết được key
Để lấy dữ liệu value
trong HashMap
khi biết được key
liên kết với value
đó, Java cung cấp cho chúng ta phương thức get()
. Phương thức này sẽ trả về giá trị (value) tương ứng với key
đó, nếu trong HashMap
không có key
đó thì phương thức này sẽ trả về giá trị null
.
Cú pháp:
get(key);
Trong đó key
là khóa của entry
cần get.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// Using get()
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
}
}
Kết quả
HashMap: {One=1, Two=2, Three=3}
Returned Number: 3
6. Thay đổi giá trị phần tử trong HashMap
Để thay thế value
của 1 entry
trong HashMap
, Java cung cấp cho chúng ta phương thức replace()
Cú pháp:
replace(K key, V value);
Trong đó key
là khóa của entry
cần thay thế, value
là giá trị mới được thay thế.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("Original HashMap: " + numbers);
// Using replace()
numbers.replace("Second", 22);
numbers.replace("Third", 3, 33);
System.out.println("HashMap using replace(): " + numbers);
}
}
Kết quả:
Original HashMap: {Second=2, Third=3, First=1}
HashMap using replace: {Second=22, Third=33, First=1}
7. Xóa phần tử trong HashMap
Để xóa 1 entry
trong HashMap
, Java cung cấp cho chúng ta phương thức remove()
Cú pháp:
remove(K key);
Trong đó key
là khóa của entry
cần xóa.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// remove method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
}
}
Kết quả:
HashMap: {One=1, Two=2, Three=3}
Removed value: 2
8. Sao chép HashMap
Để sao chép các entry
có trong HashMap
này vào trong 1 HashMap
khác, Java cung cấp cho chúng ta phương thức putAll()
.
Cú pháp
putAll(HashMap m);
Trong đó m
là tên của HashMap
được sao chép.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Creating a hashmap of even numbers
HashMap<String, Integer> evenNumbers = new HashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
System.out.println("HashMap1: " + evenNumbers);
//Creating HashMap of numbers
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("HashMap2: " + numbers);
}
}
Kết quả
HashMap1: {Four=4, Two=2}
HashMap2: {One=1, Four=4, Two=2}
9. Duyệt các phần tử trong HashMap
Trong một HashMap, chúng ta có thể
- Lặp qua các key của nó
- Lặp qua các value của nó
- Lặp qua các key / value của nó
9.1. Sử dụng vòng lặp forEach
import java.util.HashMap;
import java.util.Map.Entry;
class Main {
public static void main(String[] args) {
// Creating a HashMap
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// Accessing the key/value pair
System.out.print("Entries: ");
for(Entry<String, Integer> entry: numbers.entrySet()) {
System.out.print(entry);
System.out.print(", ");
}
// Accessing the key
System.out.print("\nKeys: ");
for(String key: numbers.keySet()) {
System.out.print(key);
System.out.print(", ");
}
// Accessing the value
System.out.print("\nValues: ");
for(Integer value: numbers.values()) {
System.out.print(value);
System.out.print(", ");
}
}
}
Kết quả
HashMap: {One=1, Two=2, Three=3}
Entries: One=1, Two=2, Three=3
Keys: One, Two, Three,
Values: 1, 2, ,3,
9.2. Sử dụng hàm iterator ()
Cũng có thể lặp lại HashMap bằng cách sử dụng hàm iterator(). Để sử dụng hàm này, chúng ta phải import java.util.Iterator
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
class Main {
public static void main(String[] args) {
// Creating a HashMap
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// Creating an object of Iterator
Iterator<Entry<String, Integer>> iterate1 = numbers.entrySet().iterator();
// Accessing the Key/Value pair
System.out.print("Entries: ");
while(iterate1.hasNext()) {
System.out.print(iterate1.next());
System.out.print(", ");
}
// Accessing the key
Iterator<String> iterate2 = numbers.keySet().iterator();
System.out.print("\nKeys: ");
while(iterate2.hasNext()) {
System.out.print(iterate2.next());
System.out.print(", ");
}
// Accessing the value
Iterator<Integer> iterate3 = numbers.values().iterator();
System.out.print("\nValues: ");
while(iterate3.hasNext()) {
System.out.print(iterate3.next());
System.out.print(", ");
}
}
}
Kết quả:
HashMap: {One=1, Two=2, Three=3}
Entries: One=1, Two=2, Three=3
Keys: One, Two, Three,
Values: 1, 2, 3,
10. 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
. Ví dụ:
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// Using keySet()
System.out.println("Keys: " + numbers.keySet());
System.out.println("Key của các entry trong hashMap: ");
for (String key : numbers.keySet()) {
System.out.println("Key = " + key);
}
}
}
Kết quả
Keys: [One, Two, Three]
Key của các entry trong hashMap:
Key = One
Key = Two
Key = Three
11. 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
. Ví dụ:
import java.util.HashMap;
class Main {
public static void main(String[] args) {
HashMap<String, Integer> numbers = new HashMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("HashMap: " + numbers);
// Using values()
System.out.println("Value: " + numbers.values());
System.out.println("Các value có trong hashMap là: ");
for (int value: numbers.values()) {
System.out.println("Value = " + value);
}
}
}
Kết quả
Values: [1, 2, 3]
Các value có trong hashMap là:
Value = 1
Value = 2
Value = 3
12. Kết
Như vậy chúng ta đã tìm hiểu về kiểu dữ liệu Hashmap và các phương thức xử lý của nó. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.