Interfaccia comparatore Java viene utilizzato per ordinare gli oggetti di una classe definita dall'utente.
Questa interfaccia si trova nel pacchetto java.util e contiene 2 metodi compare (oggetto obj1, oggetto obj2) ed equals (elemento oggetto).
Fornisce più sequenze di ordinamento, ovvero è possibile ordinare gli elementi sulla base di qualsiasi membro dei dati, ad esempio rollno, nome, età o qualsiasi altra cosa.
Metodi dell'interfaccia del comparatore Java
Metodo | Descrizione |
---|---|
public int compare(Oggetto obj1, Oggetto obj2) | Confronta il primo oggetto con il secondo oggetto. |
booleano pubblico è uguale a (Oggetto oggetto) | Viene utilizzato per confrontare l'oggetto corrente con l'oggetto specificato. |
booleano pubblico è uguale a (Oggetto oggetto) | Viene utilizzato per confrontare l'oggetto corrente con l'oggetto specificato. |
Metodo | Descrizione |
---|---|
int confronta(T o1, T o2) | Confronta il primo oggetto con il secondo oggetto. |
statico | Accetta una funzione che estrae una chiave di ordinamento comparabile da un tipo T e restituisce un comparatore che confronta in base a quella chiave di ordinamento. |
Confronto comparatore statico (Funzione keyExtractor, Comparator keyComparator) | Accetta una funzione che estrae una chiave di ordinamento da un tipo T e restituisce un comparatore che confronta in base a tale chiave di ordinamento utilizzando il comparatore specificato. |
Comparatore statico comparendoDouble(ToDoubleFunction keyExtractor) | Accetta una funzione che estrae una doppia chiave di ordinamento da un tipo T e restituisce un comparatore che confronta in base a quella chiave di ordinamento. |
Comparatore statico comparendoInt(ToIntFunction keyExtractor) | Accetta una funzione che estrae una chiave di ordinamento int da un tipo T e restituisce un comparatore che confronta in base a quella chiave di ordinamento. |
Comparatore statico che confrontaLong(ToLongFunction keyExtractor) | Accetta una funzione che estrae una chiave di ordinamento lunga da un tipo T e restituisce un comparatore che confronta in base a quella chiave di ordinamento. |
booleano è uguale a(Oggetto oggetto) | Viene utilizzato per confrontare l'oggetto corrente con l'oggetto specificato. |
statico | Restituisce un comparatore che confronta oggetti comparabili in ordine naturale. |
Comparatore statico nullsFirst(Comparatore comparatore) | Restituisce un comparatore che considera null come inferiore agli elementi non null. |
Comparatore statico nullsLast(Comparatore comparatore) | Restituisce un comparatore che considera null come maggiore degli elementi non null. |
comparatore predefinito invertito() | Restituisce un comparatore che contiene l'ordine inverso del comparatore fornito. |
statico | Restituisce un comparatore che contiene l'inverso dell'ordinamento naturale. |
Comparatore predefinito quindiConfronto(Comparatore altro) | Restituisce un comparatore di ordine lessicografico con un altro comparatore. |
predefinitoComparatore quindi Confronto (Estrattore tasto funzione) | Restituisce un comparatore di ordine lessicografico con una funzione che estrae una chiave di ordinamento comparabile. |
comparatore predefinito thenComparing(Funzione keyExtractor, Comparator keyComparator) | Restituisce un comparatore di ordine lessicografico con una funzione che estrae una chiave da confrontare con il comparatore specificato. |
comparatore predefinito thenComparingDouble(ToDoubleFunction keyExtractor) | Restituisce un comparatore di ordine lessicografico con una funzione che estrae una doppia chiave di ordinamento. |
comparatore predefinito thenComparingInt(ToIntFunction keyExtractor) | Restituisce un comparatore di ordine lessicografico con una funzione che estrae una chiave di ordinamento int. |
comparatore predefinito thenComparingLong(ToLongFunction keyExtractor) | Restituisce un comparatore di ordine lessicografico con una funzione che estrae una chiave di ordinamento lunga. |
Esempio di comparatore Java 8
Vediamo l'esempio di ordinamento degli elementi di List in base all'età e al nome.
File: 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; } }
File: 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
Esempio di comparatore Java 8: metodo nullsFirst() e nullsLast()
Qui ordiniamo l'elenco di elementi che contengono anche null.
File: 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; } }
File: 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