آموزش جامع Map در جاوا (بخش دوم)


آموزش جامع Map در جاوا (بخش دوم)
براي خريد اين درس نياز است وارد سايت شويد. در صورت نداشتن حساب کاربري عضو شويد.

آموزش جامع Map در جاوا – بخش دوم

در جلسه گذشته ساختار Map را توضیح دادیم و گفتیم که Map ها مانند کالکشن ها هستند با این تفاوت که عناصر آن‌ها دارای کلید(key) و مقدار(value) است. در این جلسه ادامه متد های Map را بررسی می‌کنیم.

متدهای کاربردی Map ها

متد keySet

این متد کلیدهای Map را در قالب Set برمی‌گرداند.

Map<String,String> mapColor=new HashMap<String,String>(){{

    put("R","Red");

    put("B","Blue");

    put("G","Green");

    put("Y","Yellow");

}};

Set<String> keys= mapColor.keySet();

System.out.println(keys);

خروجی

[R, B, G, Y]

متد values

این متد تمام مقدار(value) Map را در قالب Collection برمی‌گرداند.

Map<String,String> mapColor=new HashMap<String,String>(){{

    put("R","Red");

    put("B","Blue");

    put("G","Green");

    put("Y","Yellow");

}};

Collection<String> values=mapColor.values();

System.out.println(values);

خروجی

[Red, Blue, Green, Yellow]

متد entrySet

این متد برای حرکت روی عناصر Map استفاده می‌شود. Entry یک کلاس داخلی درون Map است که Map را به کالکشن با دو مقدار key و value تبدیل می‌کند.

Map<String,String> mapColor=new HashMap<String,String>(){{

    put("R","Red");

    put("B","Blue");

    put("G","Green");

    put("Y","Yellow");

}};

System.out.println(mapColor.entrySet());

خروجی

[R=Red, B=Blue, G=Green, Y=Yellow]

با استفاده از حلقه for و متد entrySet می‌توان روی Map حرکت کرد.

for(Map.Entry<String,String> entry :mapColor.entrySet()){

    System.out.println(entry.getKey()+" ==> "+entry.getValue());

}

خروجی

R ==> Red

B ==> Blue

G ==> Green

Y ==> Yellow

همچنین زمانی که تابع entrySet را فراخوانی می‌کنیم خروجی از نوع کالکشن است و می‌توان با استفاده از Iterator روی آن حرکت کرد.

Iterator iterator= mapColor.entrySet().iterator();

while (iterator.hasNext()){

    System.out.println(iterator.next());

}

خروجی

R=Red

B=Blue

G=Green

Y=Yellow

تا اینجا متدهای کاربردی مپ ها را توضیح دادیم در ادامه می‌خواهیم کلاس مدل خود را به عنوان key یا value مپ قرار دهیم.

در ابتدا یک کلاس به نام Person می‌سازیم و توابع equals, hashCode, compareTo را بازنویسی می‌کنیم که برابر با کد های زیر است:

public class Person implements Comparable {

    private int personId;

    private String name;

    private String family;

    private int age;


    public Person(int personId, String name, String family, int age) {

        this.personId = personId;

        this.name = name;

        this.family = family;

        this.age = age;

    }



    public int getPersonId() {

        return personId;

    }


    public void setPersonId(int personId) {

        this.personId = personId;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public String getFamily() {

        return family;

    }


    public void setFamily(String family) {

        this.family = family;

    }


    public int getAge() {

        return age;

    }


    public void setAge(int age) {

        this.age = age;

    }


    @Override

    public String toString() {

        return "Person{" +

                "personId=" + personId +

                ", name='" + name + '\'' +

                ", family='" + family + '\'' +

                ", age=" + age +

                '}';

    }



    @Override

    public boolean equals(Object o) {

        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        return personId == person.personId && age == person.age && Objects.equals(name, person.name) && Objects.equals(family, person.family);

    }


    @Override

    public int hashCode() {

        return Objects.hash(personId, name, family, age);

    }



    @Override

    public int compareTo(Object o) {

        Person person2=(Person) o;

        return this.getFamily().compareTo(person2.getFamily());

    }

}

کدهای کلاس Main

TreeMap<Integer,Person> map1=new TreeMap<>();

map1.put(800,new Person(1,"mehdi","Rezaie",34));

map1.put(320,new Person(2,"Ali","Ahmadi",29));

map1.put(180,new Person(3,"Reza","Tavakoli",54));

System.out.println(map1);

System.out.println(map1.entrySet());

خروجی

{180=Person{personId=3, name='Reza', family='Tavakoli', age=54}, 320=Person{personId=2, name=Ali, family='Ahmadi', age=29}, 800=Person{personId=1, name='mehdi', family='Rezaie', age=34}}

[180=Person{personId=3, name='Reza', family='Tavakoli', age=54}, 320=Person{personId=2, name=Ali, family='Ahmadi', age=29}, 800=Person{personId=1, name='mehdi', family='Rezaie', age=34}]

همچنین می توان به کمک حلقه foreach و متد entrySet روی عناصر Map حرکت کرد.

for(Map.Entry<Integer,Person> entry :map1.entrySet()){

    System.out.println(entry.getValue());

}

خروجی

180=Person{personId=3, name='Reza', family='Tavakoli', age=54}

320=Person{personId=2, name=Ali, family='Ahmadi', age=29}

800=Person{personId=1, name='mehdi', family='Rezaie', age=34}

در ادامه می‌خواهیم کلاس مدل person را به عنوان کلید Map قرار دهیم.

TreeMap<Person,String> map2=new TreeMap<>();

map2.put(new Person(1,"mehdi","Rezaie",34),"Blue");

map2.put(new Person(2,"Ali","Ahmadi",29),"Yellow");

map2.put(new Person(3,"Reza","Tavakoli",54),"Red");

System.out.println(map2);

System.out.println(map2.entrySet());

خروجی

{Person{personId=2, name=Ali, family='Ahmadi', age=29}=Yellow, Person{personId=1, name='mehdi', family='Rezaie', age=34}=Blue, Person{personId=3, name='Reza', family='Tavakoli', age=54}=Red}

[Person{personId=2, name=Ali, family='Ahmadi', age=29}=Yellow, Person{personId=1, name='mehdi', family='Rezaie', age=34}=Blue, Person{personId=3, name='Reza', family='Tavakoli', age=54}=Red]

همانطور که در بالا مشاهده می‌کنید TreeMap براساس کلید، Map را مرتب می‌کند و ما تابع compareTo را درون کلاس Override کردیم و به درستی این عملیات انجام شده است.

 

یادگیری این دوره تنها با یک جلسه به پایان نمی‌رسد و شما می‌توانید با تهیه این درس و سایر دروس ارائه شده در این دوره، به طور کامل به مباحث جاوا پیشرفته تسلط پیدا کنید.

بسیار خرسندیم که با یک جلسه دیگر از این آموزش جاوا پیشرفته در خدمت شما بودیم و توانستیم به پیشرفت شما دوستان عزیز کمک کنیم. شما عزیزان می‌توانید برای دسترسی بیشتر به جلسات این دوره از آموزش، آن را دانلود کنید.

 


نظر بدهید نظر شما در تصمیم دیگران اثرگذار است. لطفا برای ما و همراهان درسمن نظر خود را بنویسید.
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.


مشخصات دوره


مدرس دوره : مهدی عباسی
تعداد جلسات : جلسه
مدت زمان : 1709 دقیقه
حجم دوره : 5/26 گیگابایت
سطح مهارت : پیشرفته
وضعیت دوره : درحال برگزاری
تعداد دانشجویان : 843
: میانگین امتیاز
برای دسترسی به این دوره وارد یا عضو شوید.
مهدی عباسی

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی آنلاین درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و ....