تیکه پاره های جاوا
526 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
💎 مقایسه و مرتب سازی اشیا با Comparable

(برای خوانایی بهتر تکه کد ها از تلگرام دسکتاپ استفاده کنید و یا گوشی خود را در حالت افقی نگه دارید )
🔆 اینترفیس Comparable به شی این اجازه را خواهد داد که با یک شی دیگر از جنس خودش مقایسه شود. این مقایسه بر اساس داده های موجود در کلاس انجام میشود. برای مثال مرتب سازی اشیا از کلاس Person بر اساس قد. برای استفاده از Comparable میبایست اینترفیس Comparable را پیاده سازی کرد. این مقایسه توسط متد compareTo صورت میگیرد. ورودی متد، یک ابجکت از نوع همین کلاس میباشد که مشخص میکند مرتب سازی بر اساس کدام داده از کلاس باشد.
🔅برای استفاده از Comparable باید آن را در کلاس موردنظر پیاده سازی کنیم. برای مثال:
class T implements Comparable<T> {
@Override
public int compareTo(T t) {
return 0;//by default
}
}
فرض کنید قرار است شی x را با y مقایسه کنیم. از آنجا که خروجی تابع از نوع Int میباشد ، سه حالت در رابطه با compareTo بوجود خواهد آمد:
1️⃣ اگر در این مقایسه دیتای انتخاب شده از کلاس Y با دیتای کلاس X برابر باشد، خروجی تابع 0 خواهد بود.
2️⃣ اگر در این مقایسه دیتای کلاس Y از دیتای کلاس X کوچکتر باشد، خروجی تابع یک مقدار منفی خواهد بود.
3️⃣ اگر در این مقایسه دیتای کلاس Y از دیتای کلاس X بزرگتر باشد، خروجی تابع یک مقدار مثبت خواهد بود.

🔰 برای مثال در کلاس زیر مقایسه بر اساس قد افراد صورت میگیرد:
public class Person implements Comparable<Person>{

private String name;
private int height;

public Person(String name, int height) {
this.name = name;
this.height = height;
}

public int getHeight() {
return height;
}

public void setHeight(int height) {
this.height = height;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public int compareTo(Person o) {
return o.height - this.height;
}

@Override
public String toString(){
return "Name: " + name + " | Height: "+height;
}
}
حالا از آنجا که کلاس Member اینترفیس Comparable را پیاده سازی میکند، میتوانیم برای مرتب سازی ابجکت ها از سایر متد های مرتب سازی استفاده کنیم. برای مثال:
🟢 متد Arrays.sort() برای مرتب سازی آرایه کاربرد دارد. در نتیجه برای مرتب سازی آرایه ای شامل اشیا از جنس Member داریم:
public class Main {
public static void main(String[] args) {
Person[] people = {
new Person("Ali",150),
new Person("Hossein", 190),
new Person("Mohammad",157),
new Person("Reza",177)
};
Arrays.sort(people);
for(Person p :people){
System.out.println(p);
}
}
}
==OUTPUT==
Name: Hossein | Height: 190
Name: Reza | Height: 177
Name: Mohammad | Height: 157
Name: Ali | Height: 150

🟢 در رابطه با لیست ها، از متد sort از کلاس Collections میتوان استفاده کرد:
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>(List.of(new Person("Ali",150),
new Person("Hossein", 190),
new Person("Mohammad",157),
new Person("Reza",177)));
Collections.sort(people);
for(Person p: people){
System.out.println(p);
}
}
}
==OUTPUT==
Name: Hossein | Height: 190
Name: Reza | Height: 177
Name: Mohammad | Height: 157
Name: Ali | Height: 150

#Comparable #Arrays #Collections
———
☕️ @PIECEJAVA
9👍1