Trong Kotlin, Map và MutableMap đều là các cấu trúc dữ liệu key-value tuy nhiên có sự khác biệt về tính không thay đổi (immutable) và có thể thay đổi (mutable):
Map là một interface trong Kotlin.Map đại diện cho một bộ các cặp key-value, trong đó mỗi key là duy nhất và không thể thay đổi.Map không có khả năng thêm hoặc xóa phần tử trực tiếp; bạn cần sử dụng các phương thức khác như put hoặc remove để thực hiện các thay đổi này.Map có thể bao gồm HashMap, LinkedHashMap, TreeMap, vv.Ví dụ sử dụng Map:
val map = mapOf("key1" to 1, "key2" to 2, "key3" to 3)
println(map["key1"]) // In ra 1
MutableMap cũng là một interface trong Kotlin.Map, MutableMap đại diện cho một bộ các cặp key-value, nhưng khác biệt là bạn có thể thay đổi nó.MutableMap cho phép thêm, xóa và thay đổi các phần tử.MutableMap bao gồm HashMap, LinkedHashMap, TreeMap, vv.Ví dụ sử dụng MutableMap:
val mutableMap = mutableMapOf("key1" to 1, "key2" to 2, "key3" to 3)
mutableMap["key4"] = 4 // Thêm một phần tử mới
mutableMap.remove("key2") // Xóa phần tử có key là "key2"
println(mutableMap["key3"]) // In ra 3
Tóm lại, Map là một interface không thể thay đổi trong khi MutableMap là một interface có thể thay đổi, cho phép thêm, xóa và thay đổi các phần tử.
HashMap là một class cụ thể trong Kotlin và thực hiện giao diện Map.HashMap cho phép thêm, xóa và truy xuất các phần tử một cách hiệu quả.HashMap khi cần một cấu trúc dữ liệu key-value đơn giản và hiệu quả.Bảng băm (hash table) là một cấu trúc dữ liệu dùng để lưu trữ các cặp key-value, trong đó các key được sử dụng để tìm kiếm các giá trị tương ứng. Mục tiêu chính của bảng băm là cung cấp một cách hiệu quả để thêm, tìm kiếm và xóa các phần tử trong tập hợp dữ liệu lớn.
Cách thức hoạt động của bảng băm thường như sau:
Bảng băm là một trong những cấu trúc dữ liệu quan trọng và được sử dụng rộng rãi trong nhiều ngôn ngữ lập trình và ứng dụng khác nhau do khả năng cung cấp thời gian truy cập đáng kể là O(1) trong trường hợp tốt nhất (nếu không có va chạm). Trong trường hợp tồi nhất, thời gian truy cập có thể là O(n), nơi n là số lượng phần tử trong bảng băm.