آشنایی با مفهوم HashMap در جاوا
وقتی وارد دنیای برنامهنویسی جاوا خواهید شد، اصطلاحی که اغلب با آن مواجه میشوید «HashMap» است؛ اما HashMap در جاوا چیست؟ HashMap چگونه در جاوا کار میکند؟ اینها سؤالاتی هستند که در این مطلب آموزش از مکتوب به بررسی آنها خواهیم پرداخت.
HashMap چیست؟
در قلمرو جاوا، HashMap بخشی از بسته java.util است. این نوعی ساختار داده قدرتمند محسوب میشود که به ما امکان میدهد عناصر را بهصورت جفت «کلید-مقدار» ذخیره و بازیابی کنیم. جنبه «کلید» جستجو و بازیابی سریع دادهها را تسهیل میکند. درک عملکرد داخلی (hashmap internal working) برای درک کامل مزایا و موارد استفاده آن بسیار مهم است.
آشنایی با کلاس HashMap و متدهای اساسی آن
کلاس HashMap در جاوا متدهای مختلفی را برای مدیریت دادهها ارائه میدهد. برخی از متدهای ضروری عبارتاند از:
- put(Object Key, Object Value): این متد برای درج جفت «کلید-مقدار» خاص در HashMap استفاده میشود.
- get(Object Key): متد get مقدار مربوط به «کلید» خاص را بازیابی میکند.
- remove(Object Key): این متد جفت «کلید-مقدار» مربوط به «کلید» مشخص شده را حذف میکند.
پیشنهاد مطالعه: آموزش hibernate در جاوا
مثال HashMap در جاوا
در اینجا یک نمونه از HashMap (hashmap example) ساده آورده شده است:
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<string integer> map = new HashMap();
// Adding elements to the HashMap
map.put("John", 25);
map.put("Emma", 30);
map.put("Oliver", 28);
// Accessing a value
int age = map.get("John");
System.out.println("John's age is : " + age);
// Removing a value
map.remove("John");
}
}
</string>
در مثال فوق، «John» ،«Emma» و «Oliver» کلیدها هستند، در حالی که اعداد مقادیر متناظر آنها هستند. خروجی مثال فوق به صورت زیر است:
نحوه کار HashMap در جاوا (how hashmap works)
در هسته خود، کلاس HashMap در جاوا آرایهای از «گره» (nodes) یا «سطل» (buckets) است. هر گره نوعی ساختار داده را نشان میدهد که هم یک کلید و هم یک مقدار را در خود جای میدهد. HashMap از کد هش کلید استفاده میکند، آن را پردازش کرده و سپس آن را به یک اندیس آرایه تبدیل میکند که در آن مقدار ذخیره میشود.
برای بازیابی یک مقدار، HashMap از کلید استفاده میکند، هشکد آن را دوباره محاسبه کرده و فهرست آرایهای که دادهها را در خود جای میدهد. این رویکرد بسیار کارآمد است و به دادهها اجازه میدهد در زمان ثابت در زمان متوسط O(1) دسترسی داشته باشند.
تفاوتهای HashMap و TreeMap
در حالی که هر دو HashMap و TreeMap برای ذخیره دادهها به عنوان جفت کلید-مقدار استفاده میشوند، تفاوتهای اساسی دارند. HashMap عملکرد زمان ثابتی را برای بازیابی و درج ارائه میدهد، اما ترتیب عناصر آن میتواند غیرقابل پیشبینی باشد.
از سوی دیگر، یک TreeMap در بسته java util تضمین میکند که ورودیها به ترتیب صعودی کلیدها نگهداری میشوند. با این حال، هزینه زمانی log(n) را برای عملیات containKey ،get ،put و remove فراهم خواهد کرد زیرا از ساختار «درخت قرمز-سیاه» در پسزمینه استفاده میکند.
پیشنهاد مطالعه: آموزش قدم به قدم ساخت ربات تلگرام با جاوا
هش مپ در جلسات جاوا
Hashmap اغلب در جلسات جاوا (جاوا جلسه) برای ذخیره دادههای کاربر استفاده میشود. به عنوان مثال، میتوان از HashMap برای ردیابی فعالیتهای کاربر در طول یک جلسه استفاده کرد. شناسه جلسه میتواند به عنوان کلید استفاده شود، در حالی که مقدار مربوطه میتواند هر داده کاربر مربوطه باشد.
مثالی از HashMap در Java
بیایید نگاهی به یک مثال جامع از HashMap در جاوا بیندازیم و عملکرد آن را به طور عمیق مورد بحث قرار دهیم.
import java.util.HashMap;
public class HashMapDemo {
public static void main(String[] args) {
// Create a new HashMap
HashMap<string string> vehicles = new HashMap();
// Add some vehicles, with their types as the keys
vehicles.put("Sedan", "Toyota Camry");
vehicles.put("SUV", "Jeep Wrangler");
vehicles.put("Pickup", "Ford F-150");
vehicles.put("Hatchback", "Honda Fit");
// Print out all keys in the HashMap
System.out.println("Vehicle Types: " + vehicles.keySet());
// Print out all values in the HashMap
System.out.println("Vehicle Models: " + vehicles.values());
// Get a vehicle given its type
String vehicle = vehicles.get("SUV");
System.out.println("\nThe SUV is a " + vehicle);
// Remove an entry
vehicles.remove("Hatchback");
// Print out the updated HashMap
System.out.println("\nUpdated Vehicle Types: " + vehicles.keySet());
System.out.println("Updated Vehicle Models: " + vehicles.values());
}
}
</string>
خروجی مثال فوق به صورت زیر است:
حال، بیایید نحوه عملکرد این HashMap را بررسی کنیم.
- ایجاد HashMap: ما یک HashMap جدید به نام «vehicles» ایجاد میکنیم. کلیدها و مقادیر این HashMap هر دو از نوع داده String هستند.
- افزودن عناصر: با استفاده از متد put، تعدادی خودرو را با انواع آنها (Sedan, SUV, Pickup, Hatchback) به عنوان کلید و مدلهای آنها به عنوان مقادیر مربوطه به HashMap اضافه میکنیم.
- چاپ کلیدها و مقادیر: با متدهای keySet و مقادیر، همه کلیدها (انواع خودرو – vehicle types) و همه مقادیر (مدل خودرو – vehicle models) را در HashMap چاپ میکنیم.
- دسترسی به مقادیر: از متد get با کلید «SUV» برای بازیابی مقدار مربوطه که «Jeep Wrangler» است استفاده میکنیم.
- حذف عناصر: برای حذف جفت کلید-مقدار مربوطه از HashMap از متد remove با کلید «Hatchback» استفاده میکنیم.
- Print Updated HashMap: در نهایت کلیدها و مقادیر بهروز شده در HashMap را پس از عملیات حذف چاپ میکنیم.
ساختار داده HashMap به ما امکان میدهد جفتهای کلید-مقدار را ذخیره کنیم. از «کلید» میتوان برای مکانیابی سریع و بازیابی «مقدار» مربوطه استفاده کرد. این کار از طریق فرآیندی به نام «هش کردن» انجام میشود که در آن یک تابع هش یک شاخص منحصربهفرد (بر اساس کلید) برای آرایهای که مقادیر را ذخیره میکند ایجاد میکند.
در این مثال، کلیدها انواع خودرو و مقادیر مدلهای خودرو هستند. هنگامیکه از متد get با یک کلید (به عنوان مثال، SUV) استفاده میکنیم، HashMap از تابع هش برای یافتن مقدار مرتبط با آن کلید (Jeep Wrangler) استفاده میکند. هنگامیکه متد remove را با یک کلید فراخوانی میکنیم (Hatchback)، HashMap از تابع هش برای مکانیابی و حذف جفت کلید-مقدار مربوطه استفاده میکند.
پیشنهاد مطالعه: آشنایی با بازار کار جاوا و درآمد یک برنامهنویس جاوا
سخن پایانی
درک مفهوم HashMaps در جاوا برای هر برنامهنویس مبتدی و حرفهای جاوا ضروری است. آنها ستون فقرات بسیاری از کارهای پیچیده دستکاری دادهها را تشکیل میدهند و تسلط بر آنها میتواند مهارتهای جاوا شما را به میزان قابل توجهی افزایش دهد. امیدواریم این راهنما یک پایه قوی برای کاوش بیشتر در HashMaps فراهم کرده باشد. فراموش نکنید که سایر موضوعات مرتبط با جاوا مانند javacup، رشتهها (String) و موارد دیگر را باید بهصورت مجزا بررسی کنید تا دانش خود را از جاوا بهمراتب بالاتری ببرید.
پیشنهاد مطالعه: آموزش مفهوم Final در جاوا + مثال عملی
آموزش جاوا
اگر به فکر یادگیری جاوا از صفر یا به فکر ارتقای مهارتهای خود در جاوا هستید بهترین و مقرون بهصرفهترین روش انجام این کار استفاده از دورههای آموزشی است. با استفاده از دورههای آموزش جاوا میتوانید یادگیری جاوا را از صفر شروع کرده یا مهارتهای خود را برای تبدیلشدن به یک فرد حرفهای ارتقا بدهید. برای این منظور در مکتب خونه انواع دوره آموزش جاوا با رویکردهای مختلفی ارائه شده است که هماکنون میتوانید از طریق صفحه آموزش جاوا به این دورههای آموزشی دستیابید.
علاوه بر جاوا برای سایر زبانهای برنامه نویسی دیگر مانند جاوا اسکریپت، پایتون، سی شارپ و غیره نیز انواع دوره آموزشی کامل و جامع وجود دارد که از طریق صفحه آموزش برنامه نویسی میتوانید به آنها دسترسی داشته باشید.