در جاوا، Map یک رابط (Interface) است که توسط آن میتوانیم مجموعهای از valueها را به صورت کلید-مقدار (Key-Value) ذخیره کنیم. به این معنی که هر مقدار با یک کلید یکتا مرتبط میشود.
از پکیج java.util.Map استفاده میکند.
به عبارت دیگر، Map مانند یک دیکشنری عمل میکند، جایی که ما بر اساس کلید، مقدار مورد نظر را به دست میآوریم. برای استفاده از Map در جاوا، ابتدا باید یک شیء از نوع Map ایجاد کنیم.
در زیر یک مثال ساده از استفاده از Map در جاوا آورده شده است:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { // ایجاد یک شیء از نوع Map با استفاده از HashMap Map<String, Integer> studentGrades = new HashMap<>(); // افزودن valueها studentGrades.put("John", 90); studentGrades.put("Emily", 85); studentGrades.put("Mike", 95); // دسترسی به Valueها int johnGrade = studentGrades.get("John"); int emilyGrade = studentGrades.get("Emily"); // چاپ valueها System.out.println("Grade for John: " + johnGrade); System.out.println("Grade for Emily: " + emilyGrade); } }
در این مثال، ما ابتدا یک شیء از نوع Map با نام studentGrades
ایجاد کردهایم و از نوع HashMap
استفاده کردهایم. سپس با استفاده از متد put، valueها را به Map اضافه کردهایم. در نهایت، با استفاده از متد get
، با دادن کلید مورد نظر، مقدار مربوطه را به دست آورده و چاپ کردهایم.
نکته: در صورت نیاز، میتوانید نوع دادههای مختلفی را برای key-value در Map استفاده کنید.
نکته: در واقع Map یک رابط (Interface) است پس نمیتوان از آن به صورت مستقیم شیء ایجاد کرد.
برای استفاده از Map باید از یکی از زیرمجموعههای آن استفاده کرد. معروفترین زیرمجموعهها شامل HashMap، HashTree و LinkedHashMap هستند.
1- HashMap: این زیرمجموعه از Map از ساختار دادهای Hash Table استفاده میکند و keyها را بر اساس تابع هش (Hash Function) ذخیره میکند. در عملیات add، delete و search بسیار سریع است و ترتیب عناصر در آن حفظ نمیشود.
2- TreeMap: این زیرمجموعه از Map از ساختار درخت جستجوی متوازن (Balanced Search Tree) استفاده میکند. عناصر در آن بر اساس ترتیب مقادیر کلیدها مرتب شدهاند و برای دسترسی سریع به عناصر مرتب شده بسیار مناسب است.
3- LinkedHashMap: این زیرمجموعه از Map از ساختار دادهای Hash Table استفاده میکند، اما در عین حال عناصر را بر اساس ترتیب ورود به Map نیز نگهداری میکند. بنابراین، این زیرمجموعه هم ترتیب ورود عناصر را حفظ میکند و هم سرعت بالایی در عملیات جستجو دارد.
- نگهداری دادهها به صورت key-value، مانند دیکشنری.
- جستجوی سریع: valueها را با جستجو بر اساس key (که هش شده) به سرعت پیدا میکند.
- ردیابی تعداد تکرارها: میتوان تعداد تکرارهای مختلف عناصر را در یک لیست یا رشته محاسبه کرد. مثال:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { // تعریف یک لیست حاوی عناصر int[] myArray = {1, 2, 3, 2, 1, 3, 4, 5, 1, 2}; // تعریف یک HashMap خالی Map<Integer, Integer> elementCount = new HashMap<>(); // استفاده از map برای ردیابی تعداد تکرارها for (int element : myArray) { if (elementCount.containsKey(element)) { elementCount.put(element, elementCount.get(element) + 1); } else { elementCount.put(element, 1); } } System.out.println(elementCount); } }
خروجی:
{1=3, 2=3, 3=2, 4=1, 5=1}