MAP-JAVA

Map trong Java là một phần của collections framework. Đối tượng Map trong Java được sử dụng để lưu trữ các ánh xạ key-value. Map trong Java không được chứa các khóa trùng lặp, tuy nhiên vẫn cho phép các giá trị trùng lặp.

Map trong Java

Một số điều quan trọng của Map trong Java là:

  1. Map cung cấp ba chế độ xem collections – tập hợp các kry, tập hợp các ánh xạ key-value và tập hợp các giá trị.
  2. Map không đảm bảo thứ tự của các ánh xạ, tuy nhiên, nó phụ thuộc vào việc triển khai. Ví dụ: HashMap không đảm bảo thứ tự của các ánh xạ nhưng TreeMap thì có.
  3. Map sử dụng hashCode và các phương thức bằng trên Key cho các hoạt động lấy và đưa. Vì vậy, các lớp có thể thay đổi không phù hợp với các phím Map. Nếu các giá trị của Mã băm hoặc bằng thay đổi sau khi đặt, bạn sẽ không nhận được giá trị chính xác trong thao tác nhận.
  4. Các lớp triển khai phổ biến của Map trong Java là HashMap, Hashtable, TreeMap, ConcurrentHashMapLinkedHashMap.
  5. Lớp AbstractMap cung cấp sự triển khai khung của giao diện Map, hầu hết các lớp Map cụ thể mở rộng lớp AbstractMap và thực hiện các phương thức bắt buộc.

LUYỆN THI CHỨNG CHỈ OCA

Các phương thức của Map trong Java

  1. int size(): trả về số lượng ánh xạ khóa-giá trị trong Map này.
  2. boolean isEmpty(): trả về true nếu không có ánh xạ nào hiện diện, ngược lại là false.
  3. boolean containsValue(Object value): trả về true nếu có ít nhất một khóa được ánh xạ tới giá trị được chỉ định, ngược lại là false.
  4. V get(Object key): trả về giá trị được ánh xạ tới khóa đã cho, nếu không tìm thấy ánh xạ thì trả về null.
  5. V put(K key, V value): thêm ánh xạ của cặp key-value vào map. Nếu đã có một giá trị được ánh xạ tới khóa này, thì hãy thay thế giá trị đó. Phương thức này trả về giá trị trước đó được liên kết với khóa hoặc null nếu không có ánh xạ cho khóa.
  6. V remove (Object key): Xóa ánh xạ cho một khóa khỏi Map này nếu nó có mặt. Trả về giá trị mà map này đã liên kết với khóa trước đó hoặc null nếu Map không chứa ánh xạ cho khóa.
  7. void putAll(Map m): Sao chép tất cả các ánh xạ từ map được chỉ định sang map này.
  8. void clear(): loại bỏ tất cả các ánh xạ khỏi Map.
  9. Set keySet(): trả về chế độ xem Đặt của tất cả các phím trong
  10. Map. Bộ khóa này được hỗ trợ bởi Map, vì vậy bất kỳ sửa đổi nào đối với Map sẽ được phản ánh vào bộ khóa và ngược lại.
  11. Collection<V> values(): trả về chế độ xem tập hợp của tất cả các giá trị trong Map. Bộ sưu tập này được hỗ trợ bởi Map, vì vậy bất kỳ thay đổi nào trong Map sẽ phản ánh vào bộ sưu tập giá trị này và ngược lại.
  12. Set<Map.Entry<K, V>> entrySet(): trả về dạng xem Set của các ánh xạ trong Map. Tập hợp này được hỗ trợ bởi Map, vì vậy bất kỳ sửa đổi nào trong Map sẽ được phản ánh trong tập mục nhập và ngược lại.

Có một số phương thức được giới thiệu trong Java 8:

  1. default V getOrDefault(Object key, V defaultValue): Trả về giá trị mà khóa đã chỉ định được ánh xạ hoặc defaultValue nếu Map này không chứa ánh xạ cho khóa.
  2. default void forEach(BiConsumer<? super K, ? super V> action): Thực hiện hành động đã cho cho mỗi mục nhập trong Map này.
  3. default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function): Thay thế giá trị của mỗi mục nhập bằng kết quả của việc gọi hàm đã cho trên mục nhập đó.
  4. default V putIfAbsent(K key, V value): Nếu khóa được chỉ định chưa được liên kết với một giá trị (hoặc được ánh xạ thành null) sẽ liên kết nó với giá trị đã cho và trả về null, thì khóa khác trả về giá trị hiện tại.
  5. default boolean remove(Object key, Object value): Chỉ xóa mục nhập cho khóa được chỉ định nếu nó hiện được ánh xạ tới giá trị được chỉ định.
  6. default boolean replace(K key, V oldValue, V newValue): Chỉ thay thế mục nhập cho khóa được chỉ định nếu hiện được ánh xạ tới giá trị được chỉ định.
  7. default V replace(K key, V value): Chỉ thay thế mục nhập cho khóa được chỉ định nếu nó hiện được ánh xạ tới một giá trị nào đó.
  8. default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction): Nếu khóa được chỉ định chưa được liên kết với một giá trị (hoặc được ánh xạ thành null), hãy cố gắng tính toán giá trị của nó bằng cách sử dụng hàm ánh xạ đã cho và nhập nó vào bản đồ này trừ khi null.
  9. default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction): Nếu giá trị cho khóa được chỉ định có mặt và không rỗng, hãy cố gắng tính một ánh xạ mới cho khóa và giá trị được ánh xạ hiện tại của nó. Nếu hàm trả về null, ánh xạ sẽ bị loại bỏ.
  10. default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction): Attempts to compute a mapping for the specified key and its current mapped value (or null if there is no current mapping).
  11. default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction): Nếu khóa được chỉ định chưa được liên kết với một giá trị hoặc được liên kết với null, hãy liên kết nó với giá trị không null đã cho. Nếu không, hãy thay thế giá trị được liên kết bằng kết quả của hàm ánh xạ lại đã cho hoặc loại bỏ nếu kết quả là rỗng.

Bạn sẽ nhận thấy rằng tất cả các phương thức mới được thêm vào trong interfasce Map Java 8 đều là các phương thức mặc định có triển khai. Điều này được thực hiện để đảm bảo không có lỗi biên dịch nào xảy ra cho bất kỳ lớp nào triển khai interface Map.

Ví dụ Map trong Java

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapExample {

	public static void main(String[] args) {

		Map<String, String> data = new HashMap<>();

		data.put("A", "A"); // put example
		data.put("B", "B");
		data.put("C", "C");
		data.put("D", null); // null value
		data.put(null, "Z"); // null key

		String value = data.get("C"); // get example
		System.out.println("Key = C, Value = " + value);

		value = data.getOrDefault("E", "Default Value");
		System.out.println("Key = E, Value=" + value);

		boolean keyExists = data.containsKey(null);
		boolean valueExists = data.containsValue("Z");

		System.out.println("keyExists= " + keyExists + ", valueExists= " + valueExists);

		Set<Entry<String, String>> entrySet = data.entrySet();
		System.out.println(entrySet);

		System.out.println("data map size=" + data.size());

		Map<String, String> data1 = new HashMap<>();
		data1.putAll(data);
		System.out.println("data1 mappings= " + data1);

		String nullKeyValue = data1.remove(null);
		System.out.println("data1 null key value = " + nullKeyValue);
		System.out.println("data1 after removing null key = " + data1);

		Set<String> keySet = data.keySet();
		System.out.println("data map keys = " + keySet);

		Collection<String> values = data.values();
		System.out.println("data map values = " + values);

		data.clear();
		System.out.println("data map is empty =" + data.isEmpty());

	}

}Code language: JavaScript (javascript)

Output


Key = C, Value = C
Key = E, Value=Default Value
keyExists= true, valueExists= true
[null=Z, A=A, B=B, C=C, D=null]
data map size=5
data1 mappings= {null=Z, A=A, B=B, C=C, D=null}
data1 null key value = Z
data1 after removing null key = {A=A, B=B, C=C, D=null}
data map keys = [null, A, B, C, D]
data map values = [Z, A, B, C, null]
data map is empty =true
Code language: PHP (php)

Đó là tất cả để tìm hiểu nhanh về interface Map trong Java. Chúc bạn học tốt.

Nguồn video: Coding with John

Bài viết liên quan

Leave a Reply

Your email address will not be published.

TÀI LIỆU DEV WORLD
Cẩm nang phát triển bền vững với nghề lập trình!