آموزش جامع Map در جاوا (بخش اول)
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش جامع Map در جاوا – بخش اول
در جلسه گذشته Queue و Set ها را توضیح دادیم و گفتیم ترتیب عناصر در Set ها اهمیت ندارد و نمیتوانیم مانند Array و ArrayList یک مقدار خاص را با استفاده از کلید یا شماره خانه واکشی کنیم.
Map یک اینترفیس و ساختار مجزا است که شبیه به Set ها هستند با این تفاوت که باید برای هر عنصر یک کلید انتخاب کرد به بتوان با استفاده از آن کلید به مقدار آنها دسترسی داشت.
سه نوع کلاس از اینترفیس map وجود دارد: HashMap – LinkedHashMap – TreeMap
هنگام نوشتن Map ها دو پارامتر جنریک دریافت میکند: پارامتر اول نوع داده کلید - پارامتر دوم نوع داده مقدار.
در HashMap ترتیب درج عناصر اهمیت ندارد.
HashMap<Integer,String> hashMap=new HashMap<>();
در LinkedHashMap ترتیب درج عناصر بر اساس ورود عناصر ذخیره میشوند.
LinkedHashMap<Integer,String> linkedHashMap=new LinkedHashMap<>();
در TreeMap بر اساس کلید عناصر مرتب میشوند.
TreeMap<Integer,String> treeMap=new TreeMap<>();
متدهای کاربردی Map ها
متد put
این متد یک Key و Value دریافت میکند و آن را به Map اضافه میکند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(9,"Reza");
hashMap.put(2,"Ahmad");
hashMap.put(null,"Mohammad");
hashMap.put(11,null);
hashMap.put(12,null);
System.out.println(hashMap);
خروجی
{null=Mohammad, 1=Mehdi, 2=Ahmad, 9=Reza, 11=null, 12=null}
نکته:
Map ها میتوانند داده های تکراری داشته باشند اما نمیتوانند کلید تکراری داشته باشند و در صورت داشتن دو عنصر با کلید تکراری آخرین عنصر درج میشود.
در HashMap و LinkedHashMap میتوان یک عنصر با کلید null وارد کرد.
متد size
این متد سایز Map را برمیگرداند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
hashMap.put(9,"Reza");
System.out.println(hashMap.size());
خروجی
3
متد iaEmpty
این متد خالی بودن Map را چک میکند.
HashMap<Integer,String> hashMap=new HashMap<>();
System.out.println(hashMap.isEmpty());
خروجی
true
متد clear
این متد Map را خالی میکند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
hashMap.put(9,"Reza");
hashMap.clear();
System.out.println(hashMap.isEmpty());
خروجی
{}
متد containsKey
این متد یک ورودی دریافت میکند و چک میکند درون کلیدهای Map آن مقدار وجود دارد یا خیر و خروجی boolean برمیگرداند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
System.out.println(hashMap.containsKey(18));
خروجی
false
متد containsValue
این متد یک ورودی دریافت میکند و درون مقدار های Map چک میکند آن ورودی وجود دارد یا خیر و خروجی boolean برمیگرداند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
System.out.println(hashMap.containsValue("Ahmad"));
خروجی
true
متد get
این متد کلید را دریافت میکند و عنصر را برمیگرداند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
System.out.println(hashMap.get(1));
System.out.println(hashMap.get(45));
خروجی
Mehdi
null
متد getOrDefault
این متد دو ورودی دریافت میکند ورودی اول کلید و ورودی دوم یک مقدار پیش فرض و اگر عنصری با آن کلید در Map وجود نداشته باشد مقدار پیش فرض را برمیگرداند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
System.out.println(hashMap.getOrDefault(1,"****"));
System.out.println(hashMap.getOrDefault(45,"****"));
خروجی
Mehdi
****
متد remove
این متد کلید را دریافت میکند و آن عنصر را از Map حذف میکند.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
hashMap.remove(1);
System.out.println(hashMap);
خروجی
{2=Ahmad}
متد replace
این متد مقدار یک عنصر را عوض میکند. ورودی اول کلید، ورودی دوم مقدار فعلی و ورودی سوم مقدار جدید است.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
hashMap.replace(2,"Ahmad","Ahmad Reza");
System.out.println(hashMap);
خروجی
{1=Mehdi, 2=Ahmad Reza}
متد putAll
این متد برای اضافه کردن یک Map به Map فعلی استفاده میشود.
HashMap<Integer,String> hashMap=new HashMap<>();
hashMap.put(1,"Mehdi");
hashMap.put(2,"Ahmad");
TreeMap<Integer,String> treeMap=new TreeMap<>();
treeMap.put(21,"Sara");
treeMap.put(4,"Narges");
hashMap.putAll(tempMap);
System.out.println(hashMap);
خروجی
{1=Mehdi, 4=Narges, 2=Ahmad, 21=Sara}
برای مقدار دهی در لحظه تعریف Map ها باید در تابع سازنده Map نوع جنریک را وارد کنید و سپس بعد از تابع سازنده از {{}} استفاده کنید و با استفاده از تابع put میتوان داده ها را اضافه کنید.
TreeMap<Integer,String> tempMap=new TreeMap<Integer,String>(){{
put(80,"Nastaran");
put(35,"Fatemeh");
}};
باعث افتخارهست که توانستیم با یک دوره جامع و کامل دیگر در خدمت شما عزیزان باشیم. این دوره فعلا شامل 56 جلسه آموزش با 1627 دقیقه است و در حال برگزاری و اضافه شدن مطالب میباشد، حتی ممکن است زمانی که این متن را میخوانید تعداد جلسات و تایم آن بیشتر نیز شده باشد، شما میتوانید با تهیه این دوره به همه جلسات و بخش های آن دسترسی داشته باشید.
شما درسمنی های عزیز هر گونه سوال یا ابهامی از این جلسه داشتید میتوانید به انجمن برنامه نویسان جاوا مراجعه کنید و سوالات خود را بپرسید.
ممنون از همراهی شما
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.