ממשק Java Comparator משמש לסדר האובייקטים של מחלקה המוגדרת על ידי המשתמש.
ממשק זה נמצא בחבילת java.util ומכיל 2 שיטות compare(Object obj1,Object obj2) ו-equals(Object element).
הוא מספק רצפי מיון מרובים, כלומר, אתה יכול למיין את האלמנטים על בסיס כל חבר נתונים, למשל, rollno, שם, גיל או כל דבר אחר.
שיטות של ממשק Java Comparator
שיטה | תיאור |
---|---|
public int compare(Object obj1, Object obj2) | זה משווה את האובייקט הראשון עם האובייקט השני. |
ציבורי בוליאני שווה (Object obj) | הוא משמש להשוואת האובייקט הנוכחי עם האובייקט שצוין. |
ציבורי בוליאני שווה (Object obj) | הוא משמש להשוואת האובייקט הנוכחי עם האובייקט שצוין. |
שיטה | תיאור |
---|---|
int compare(T o1, T o2) | הוא משווה את האובייקט הראשון לאובייקט השני. |
סטָטִי | הוא מקבל פונקציה המחלצת מפתח מיון Comparable מסוג T, ומחזירה Comparator שמשווה לפי מפתח המיון הזה. |
השוואת משווה סטטית (מחלץ מפתח פונקציות, משווה מפתח משווה) | הוא מקבל פונקציה המחלצת מפתח מיון מסוג T, ומחזירה Comparator שמשווה לפי מפתח המיון הזה באמצעות המשווה שצוין. |
Comparator static comparingDouble(ToDoubleFunction keyExtractor) | הוא מקבל פונקציה המחלצת מפתח מיון כפול מסוג T, ומחזירה Comparator שמשווה לפי מפתח המיון הזה. |
Comparator static comparingInt(ToIntFunction keyExtractor) | הוא מקבל פונקציה המחלצת מפתח מיון int מסוג T, ומחזירה Comparator שמשווה לפי מפתח המיון הזה. |
Comparator static comparingLong(ToLongFunction keyExtractor) | הוא מקבל פונקציה המחלצת מפתח מיון ארוך מסוג T, ומחזירה Comparator שמשווה לפי מפתח המיון הזה. |
בוליאני שווה (Object obj) | הוא משמש להשוואת האובייקט הנוכחי עם האובייקט שצוין. |
סטָטִי | זה מחזיר משווה שמשווה אובייקטים ניתנים להשוואה בסדר טבעי. |
Static Comparator nullsFirst(Comparator Comparator) | היא מחזירה משווה שמתייחס ל-null להיות פחות מאלמנטים שאינם אפס. |
Static Comparator nullsLast(Comparator Comparator) | היא מחזירה משווה שמתייחס ל-null להיות גדול יותר מאלמנטים שאינם אפס. |
ברירת המחדל Comparator reversed() | הוא מחזיר משווה שמכיל סדר הפוך של המשווה שסופק. |
סטָטִי | היא מחזירה משווה שמכילה סדר הפוך מהסדר הטבעי. |
ברירת המחדל Comparator thenComparing(Comparator אחר) | היא מחזירה משווה מסדר לקסיקוגרפי עם משווה אחר. |
בְּרִירַת מֶחדָלComparator thenComparing(Function keyExtractor) | הוא מחזיר משווה מסדר לקסיקוגרפי עם פונקציה המחלצת מפתח מיון Comparable. |
ברירת המחדל Comparator thenComparing(מפתח פונקציהExtractor, Comparator keyComparator) | הוא מחזיר משווה מסדר לקסיקוגרפי עם פונקציה המחלצת מפתח שיש להשוות עם המשווה הנתון. |
ברירת המחדל Comparator thenComparingDouble(ToDoubleFunction keyExtractor) | הוא מחזיר משווה מסדר לקסיקוגרפי עם פונקציה המחלצת מפתח מיון כפול. |
ברירת המחדל Comparator thenComparingInt(ToIntFunction keyExtractor) | הוא מחזיר משווה מסדר לקסיקוגרפי עם פונקציה המחלצת מפתח מיון int. |
ברירת המחדל Comparator thenComparingLong(ToLongFunction keyExtractor) | הוא מחזיר השוואת סדר לקסיקוגרפי עם פונקציה המחלצת מפתח מיון ארוך. |
דוגמה להשוואה של Java 8
בואו נראה את הדוגמה של מיון האלמנטים של רשימה על בסיס גיל ושם.
קובץ: Student.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
קובץ: 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)); //Sorting elements on the basis of name Comparator cm1=Comparator.comparing(Student::getName); Collections.sort(al,cm1); System.out.println('Sorting by Name'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } //Sorting elements on the basis of age Comparator cm2=Comparator.comparing(Student::getAge); Collections.sort(al,cm2); System.out.println('Sorting by Age'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27
דוגמה להשוואה של Java 8: שיטת nullsFirst() ו-nullsLast().
כאן, אנו ממיינים את רשימת האלמנטים המכילה גם null.
קובץ: Student.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
קובץ: TestSort2.java
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,null,21)); Comparator cm1=Comparator.comparing(Student::getName,Comparator.nullsFirst(String::compareTo)); Collections.sort(al,cm1); System.out.println('Considers null to be less than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } Comparator cm2=Comparator.comparing(Student::getName,Comparator.nullsLast(String::compareTo)); Collections.sort(al,cm2); System.out.println('Considers null to be greater than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Considers null to be less than non-null 105 null 21 106 Ajay 27 101 Vijay 23 Considers null to be greater than non-null 106 Ajay 27 101 Vijay 23 105 null 21