هش مپ (HashMap)
«هش مپ (HashMap)» جفت های «کلید-مقدار» را ذخیره می کند. «کلید (Key)» شناسه یکتا است. «مقدار (Value)» داده مربوط به آن کلید است. مثل دفتر مدرسه؛ شماره دانش آموز کلید است و نام او مقدار است.
هش مپ جاوا چیست؟
هش مپ در بسته java.util است و رابط Map را پیاده سازی می کند. در ArrayList با «ایندکس» می گیریم؛ اما در HashMap با «کلید» مقدار را می گیریم.
ساخت یک HashMap
import java.util.HashMap;
HashMap<String, String> capitalCities = new HashMap<>();
نکته: با put() اضافه کن، با get() بخوان، با remove() حذف کن.
افزودن آیتم ها با put()
// Import the HashMap class
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// Create a HashMap object called capitalCities
HashMap<String, String> capitalCities = new HashMap<String, String>();
// Add keys and values (Country, City)
capitalCities.put("England", "London");
capitalCities.put("India", "New Dehli");
capitalCities.put("Austria", "Wien");
capitalCities.put("Norway", "Oslo");
capitalCities.put("Norway", "Oslo");
capitalCities.put("USA", "Washington DC");
System.out.println(capitalCities);
}
}
هشدار: اگر یک کلید تکرار شود، مقدار جدید قبلی را بازنویسی می کند.
خواندن مقدار با get()
capitalCities.get("England");
حذف یک آیتم و پاک سازی
capitalCities.remove("England");
capitalCities.clear();
گرفتن تعداد آیتم ها
capitalCities.size();
نکته: فقط کلیدهای یکتا شمرده می شوند.
حلقه روی کلیدها و مقدارها
// Print keys
for (String k : capitalCities.keySet()) {
System.out.println(k);
}
// Print values
for (String v : capitalCities.values()) {
System.out.println(v);
}
// Print keys and values
for (String k : capitalCities.keySet()) {
System.out.println("key: " + k + " value: " + capitalCities.get(k));
}
انواع دیگر: کلید/مقدار غیر String
// Import the HashMap class
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// Create a HashMap object called people
HashMap<String, Integer> people = new HashMap<String, Integer>();
// Add keys and values (Name, Age)
people.put("John", 32);
people.put("Steve", 30);
people.put("Angie", 33);
for (String name : people.keySet()) {
System.out.println("key: " + name + " value: " + people.get(name));
}
}
}
کلیدواژه var در جاوا 10
// Without var
HashMap<String, String> capitalCities = new HashMap<String, String>();
// With var
var capitalCities = new HashMap<String, String>();
نکته: var کد را کوتاه می کند؛ اما شفافیت هم مهم است.
اعلان با نوع Map و شیء HashMap
import java.util.Map;
import java.util.HashMap;
Map<String, String> capitalCities = new HashMap<>();
نکته: این کار انعطاف می دهد تا بعداً پیاده سازی را عوض کنی؛ مثلاً به TreeMap.
کی به جای HashMap از نوع دیگر استفاده کنیم؟
اگر مرتب سازی بر اساس کلید می خواهی، TreeMap مناسب است. اگر ترتیب ورود مهم است، LinkedHashMap بهتر است. برای آشنایی کلی با Map، صفحه نقشه (Map) را ببین.
جمع بندی سریع
- هش مپ جفت کلید-مقدار نگه می دارد.
- کلید یکتا است؛ مقدار می تواند تکراری باشد.
- put اضافه می کند؛ get می خواند؛ remove حذف می کند.
- کلید تکراری مقدار قبلی را بازنویسی می کند.
- برای ترتیب، سراغ TreeMap یا LinkedHashMap برو.