ממשק Java Comparable משמש להזמנת האובייקטים של המחלקה המוגדרת על ידי המשתמש. ממשק זה נמצא בחבילת java.lang ומכיל רק שיטה אחת בשם compareTo(Object). הוא מספק רצף מיון יחיד בלבד, כלומר, אתה יכול למיין את האלמנטים על בסיס איבר נתונים בודד בלבד. לדוגמה, זה יכול להיות rollno, שם, גיל או כל דבר אחר.
השיטה compareTo(Object obj).
public int compareTo(Object obj): הוא משמש להשוואת האובייקט הנוכחי עם האובייקט שצוין. זה חוזר
- מספר שלם חיובי, אם האובייקט הנוכחי גדול מהאובייקט שצוין.
- מספר שלם שלילי, אם האובייקט הנוכחי קטן מהאובייקט שצוין.
- אפס, אם האובייקט הנוכחי שווה לאובייקט שצוין.
אנחנו יכולים למיין את האלמנטים של:
חסרונות לגבי האינטרנט
- חפצי מחרוזת
- אובייקטים בכיתה עטיפה
- אובייקטי מחלקה המוגדרים על ידי משתמש
שיעור אוספים
אוספים class מספקת שיטות סטטיות למיון רכיבי האוספים. אם רכיבי האוסף הם של Set או Map, נוכל להשתמש ב-TreeSet או ב-TreeMap. עם זאת, איננו יכולים למיין את האלמנטים של רשימה. מחלקה Collections מספקת שיטות למיון האלמנטים של אלמנטים מסוג List.
מחלקה שיטת אוספים למיון רכיבי רשימה
מיון חלל ציבורי (רשימת רשימה): הוא משמש למיון האלמנטים של List. רכיבי רשימה חייבים להיות מהסוג Comparable.
גנריות ב-java
הערה: מחלקות String ו-Wrapper מיישמות את ממשק Comparable כברירת מחדל. אז אם אתה מאחסן את האובייקטים של מחלקות מחרוזת או עטיפה ברשימה, סט או מפה, זה יהיה Comparable כברירת מחדל.
דוגמה להשוואה ב-Java
בואו נראה את הדוגמה של ממשק Comparable שממיין את רכיבי הרשימה על בסיס גיל.
קובץ: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } }
קובץ: TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
דוגמה דומה ל-Java: סדר הפוך
בואו נראה את אותה דוגמה של ממשק Comparable שממיין את רכיבי הרשימה על בסיס גיל בסדר הפוך.
js settimeout
קובץ: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age<st.age) return 1; else -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21