نحوه کار با HashMap در جاوا

HashMap
یک ساختار داده قدرتمند در جاوا است که به شما امکان می دهد جفت های کلید-مقدار را به طور موثر ذخیره و مدیریت کنید. این راهنما اصول کار با آن را پوشش می دهد HashMap
، شامل روش ها و مثال هایی که معمولاً استفاده می شود برای کمک به درک کاربرد آن.
مقدمه ای بر هش مپ
الف HashMap
داده ها را در قالب جفت های کلید-مقدار ذخیره می کند و پیچیدگی زمان ثابتی را برای عملیات اساسی مانند put
، get
، و remove
(به طور متوسط). در اینجا دلیل آن است HashMap
بسیار مفید است:
- کلیدها منحصر به فرد هستند، اما مقادیر را می توان تکرار کرد.
- کلیدها و مقادیر می توانند از هر نوع شی باشند.
- بخشی از
java.util
بسته بندی - اجازه می دهد
null
به عنوان یک کلید یا مقدار
مثال:
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
// Adding key-value pairs
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
// Accessing a value
System.out.println(map.get(1)); // Output: Apple
}
}
ایجاد HashMap
برای ایجاد یک HashMap
، از نحو زیر استفاده کنید:
HashMap<KeyType, ValueType> mapName = new HashMap<>();
مثال:
HashMap<String, Integer> frequencyMap = new HashMap<>();
در اینجا، نوع کلید است String
و نوع مقدار آن است Integer
.
روش های رایج
در اینجا روش های کلیدی وجود دارد HashMap
:
1. put(K key, V value)
- توضیحات: یک جفت کلید-مقدار به نقشه اضافه می کند. اگر کلید از قبل وجود داشته باشد، مقدار را به روز می کند.
- مثال:
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(1, "Cherry"); // Updates value for key 1
System.out.println(map); // Output: {1=Cherry, 2=Banana}
2. get(Object key)
-
توضیحات: مقدار مربوط به کلید مشخص شده را بازیابی می کند. برمی گرداند
null
اگر کلید پیدا نشد - مثال:
System.out.println(map.get(1)); // Output: Cherry
System.out.println(map.get(3)); // Output: null
3. getOrDefault(Object key, V defaultValue)
-
توضیحات: مقدار کلید مشخص شده را بازیابی می کند. برمی گرداند
defaultValue
اگر کلید پیدا نشد - مثال:
System.out.println(map.getOrDefault(3, "Default")); // Output: Default
4. containsKey(Object key)
- توضیحات: بررسی می کند که آیا نقشه حاوی کلید مشخص شده است یا خیر.
- مثال:
System.out.println(map.containsKey(1)); // Output: true
System.out.println(map.containsKey(3)); // Output: false
5. containsValue(Object value)
- توضیحات: بررسی می کند که آیا نقشه دارای مقدار مشخص شده است یا خیر.
- مثال:
System.out.println(map.containsValue("Cherry")); // Output: true
System.out.println(map.containsValue("Orange")); // Output: false
6. remove(Object key)
-
توضیحات: ورودی کلید مشخص شده را حذف می کند و مقدار را برمی گرداند. برمی گرداند
null
اگر کلید پیدا نشد - مثال:
System.out.println(map.remove(1)); // Output: Cherry
System.out.println(map); // Output: {2=Banana}
7. putIfAbsent(K key, V value)
- توضیحات: فقط در صورتی یک جفت کلید-مقدار اضافه می کند که کلید از قبل در نقشه وجود نداشته باشد.
- مثال:
map.putIfAbsent(3, "Orange");
System.out.println(map); // Output: {2=Banana, 3=Orange}
8. replace(K key, V value)
- توضیحات: مقدار مربوط به کلید را تنها در صورت وجود کلید جایگزین می کند.
- مثال:
map.replace(3, "Grapes");
System.out.println(map); // Output: {2=Banana, 3=Grapes}
9. keySet()
-
توضیحات: A را برمی گرداند
Set
حاوی تمام کلیدهای نقشه - مثال:
System.out.println(map.keySet()); // Output: [2, 3]
10. values()
-
توضیحات: A را برمی گرداند
Collection
از تمام مقادیر موجود در نقشه - مثال:
System.out.println(map.values()); // Output: [Banana, Grapes]
11. entrySet()
-
توضیحات: A را برمی گرداند
Set
از همه جفت های کلید-مقدار (Map.Entry
) در نقشه - مثال:
for (var entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
// Output:
// 2 -> Banana
// 3 -> Grapes
12. compute(K key, BiFunction super K, ? super V, ? extends V> remappingFunction)
- توضیحات: مقدار کلید داده شده را با استفاده از یک تابع محاسباتی به روز می کند.
- مثال:
map.put(1, 10);
map.compute(1, (k, v) -> v * 2); // Doubles the value
System.out.println(map); // Output: {1=20}
13. merge(K key, V value, BiFunction super V, ? super V, ? extends V> remappingFunction)
- توضیحات: یک مقدار جدید را با مقدار موجود برای کلید داده شده ترکیب می کند.
- مثال:
map.put(1, 10);
map.merge(1, 5, Integer::sum); // Adds the values
System.out.println(map); // Output: {1=15}
مثال کامل: شمارشگر فرکانس ورد
در اینجا یک مثال کامل است که نحوه استفاده را نشان می دهد HashMap
برای شمارش فراوانی کلمات:
import java.util.HashMap;
public class WordFrequency {
public static void main(String[] args) {
String[] words = {"apple", "banana", "apple", "orange", "banana", "apple"};
HashMap<String, Integer> frequencyMap = new HashMap<>();
for (String word : words) {
frequencyMap.put(word, frequencyMap.getOrDefault(word, 0) + 1);
}
System.out.println(frequencyMap); // Output: {orange=1, banana=2, apple=3}
}
}
نتیجه گیری
را HashMap
class یک روش همه کاره و کارآمد برای مدیریت جفت های کلید-مقدار در جاوا است. با درک روش های آن، می توانید طیف گسترده ای از مشکلات را حل کنید، از جستجوی ساده تا دستکاری داده های پیچیده. شروع به استفاده کنید HashMap
در پروژه های خود برای استفاده از قدرت آن!