Überblick über Vergleichbares in Java Beispiel

In Java vergleichbar ist eine Interferenz, mit der aktuelle Objekte mit anderen Objekten desselben Typs verglichen werden. Dieser Vergleich kann zum Sortieren von Elementen in einer Sammlung verwendet werden. Sie müssen die Schnittstelle in eine Klasse implementieren, um sie sortierbar oder "vergleichbar" zu machen. Sie müssen nur eine Methode "compareTo" implementieren. Diese Sortierung jeder Art wird natürliche Sortierung genannt, und die implementierte "compareTo" -Methode wird natürliche Vergleichsmethode genannt. Hier in diesem Artikel über Vergleichbares in Java sehen wir uns die verschiedenen Beispiele für Vergleichbares in Java an.

Erklärung:

Schnittstelle vergleichbar

Um diese Schnittstelle zu implementieren, müssen Sie diese Methode implementieren:

public int compareTo(To);

Parameter:

T - ist der Objekttyp, mit dem dieses Objekt verglichen wird.

Rückgabewert:

Die compareTo-Methode gibt 0 zurück, wenn das angegebene Objekt und dieses Objekt gleich sind, gibt eine negative Ganzzahl zurück, wenn dieses Objekt kleiner als das angegebene Objekt ist, und eine positive Ganzzahl, wenn dieses Objekt größer als das angegebene Objekt ist.

Wirft:

ClasscastException - Wenn das an diese Methode übergebene Objekt null ist

NullPointerException - Wenn das an diese Methode übergebene Objekt nicht mit diesem Objekt kompatibel ist.

Klassen, die Comparable-Interfaces implementieren, haben eine festgelegte natürliche Reihenfolge und können daher mit Collections.sort () und Arrays.sort () direkt in Collection oder Arrays sortiert werden. Sie können auch als Schlüssel für sortierte Karten und Elemente in sortierten Mengen verwendet werden, ohne den Komparator separat anzugeben.

Lassen Sie uns die vergleichbare Schnittstelle anhand eines Beispiels verstehen:

Beispiel:

package comparableDemo;
import java.util.TreeSet;
public class Student implements Comparable (
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public int compareTo(Student o) (
if (this.rollNo > o.rollNo) (
return 1;
) else if (this.rollNo == o.rollNo) (
return 0;
) else (
return -1;
)
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
TreeSet students = new TreeSet();
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

Ausgabe:

Erläuterung

Dies ist eine Anwendung zum Speichern von Schülerdaten.

  • Zunächst haben wir eine Klasse „Student“ als Repräsentation der Entität Student erstellt. Wir werden grundlegende Details wie Rollennummer, Name und Alter der Schüler speichern.
  • Die Liste der Schüler muss nach der Rollennummer sortiert werden.
  • Um diese Anforderung zu erfüllen, wird eine vergleichbare Schnittstelle implementiert und anhand der Rollennummer mit den Schülern verglichen, da Sie die Implementierung der "compareTo" -Methode sehen können.
  • Dann haben wir die Hauptmethode, um die Funktionalität zu zeigen. Hier haben wir ein „TreeSet“ erstellt und fünf Schüler mit zufälligen Rollennummern hinzugefügt. Wir haben "TreeSet" verwendet, weil es Elemente in sortierter Reihenfolge speichert.
  • Wenn Sie nun die Liste der Schüler durchlaufen, werden Sie feststellen, dass die Schüler nach der Rollennummer sortiert sind. Das war unser Anspruch!
  • Wir könnten die Schüler auch nach anderen Attributen wie Name oder Alter sortieren. Dazu müssen wir in der Methode "compareTo" anstelle von "rollNo" Namens- oder Altersvariablen verwenden.

Beispiel:

@Override
public int compareTo(Student o) (
if (this.age> o.age) (
return 1;
) else if (this.age == o.age) (
return 0;
) else (
return -1;
)
)
OR
@Override
public int compareTo(Student o) (
return this.name.compareTo(o.name);
)

Vergleichbar mit Vergleicher

Comparator ist auch eine Schnittstelle wie Comparable, die zum Vergleichen von zwei Objekten eines Typs verwendet wird. Der Unterschied besteht darin, dass Comparator nicht in der Entitätsklasse selbst implementiert ist. Wir müssen es in einer anderen Klasse implementieren und die Instanz davon explizit dem Sortiermechanismus zur Verfügung stellen. Zu diesem Zweck können wir auch eine anonyme Klasseninstanz verwenden.

Angenommen, wir haben eine Student-Klasse, ohne die Schnittstelle Comparable zu implementieren:

package comparableDemo;
import java.util.TreeSet;
public class Student(
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
TreeSet students = new TreeSet();
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

Wenn Sie versuchen, dieses Programm auszuführen, erhalten Sie diese Ausnahme:

Weil TreeSet eine Möglichkeit zum Sortieren der Elemente benötigt.

Um diesen Fehler zu beheben, können wir Comparator wie in diesem Programm implementiert verwenden:

package comparableDemo;
import java.util.Comparator;
import java.util.TreeSet;
public class Student (
private int rollNo;
private String name;
private int age;
public Student(int rollNo, String name, int age) (
this.rollNo = rollNo;
this.name = name;
this.age = age;
)
@Override
public String toString() (
return "RollNo-" + this.rollNo + ", Name-" + this.name + ", Age-" + this.age;
)
public static void main(String() args) (
Comparator studentComparator = new Comparator() (
@Override
public int compare(Student o1, Student o2) (
if (o1.rollNo < o2.rollNo) (
return -1;
) else if (o1.rollNo == o2.rollNo) (
return 0;
) else (
return 1;
)
)
);
TreeSet students = new TreeSet(studentComparator);
Student student1 = new Student(3, "Raj", 20);
Student student2 = new Student(5, "Shyam", 18);
Student student3 = new Student(1, "Ram", 19);
Student student4 = new Student(4, "Sunil", 25);
Student student5 = new Student(2, "Ajay", 26);
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
for (Student student : students) (
System.out.println(student);
)
)
)

Sie können sehen, dass die Comparator-Schnittstelle in einer anonymen inneren Klasse implementiert ist und TreeSet eine Instanz zum Sortieren von Elementen zur Verfügung stellt. Jetzt erhalten Sie wie zuvor eine korrekte Ausgabe.

Erfassungsschnittstelle in Java

Die Auflistung ist die Stammschnittstelle im Auflistungsframework. Es enthält die Deklaration aller Allzweckmethoden, die in Sammlungen wie Listen und Mengen implementiert sind. Die Map-Schnittstelle erweitert die Collection-Schnittstelle nicht, da Map eine Sammlung von Schlüssel-Wert-Paaren und nicht nur eine Sammlung von Elementen ist. Einige der Collection-Schnittstellenmethoden sind in einer abstrakten Klasse "AbstractCollection" implementiert.

Diese Schnittstelle wird nicht direkt implementiert, sondern um bestimmte Schnittstellen erweitert, da die Implementierung dieser Methoden sammlungsspezifisch ist. Beispielsweise erlaubt eine Sammlung doppelte Elemente (Ex-Liste), während einige nicht (Ex-Set), andere die Indizierung beibehalten (Ex-Liste), während andere nicht (Ex-Set).

Einige wichtige Methoden werden hier beschrieben:

  1. Boolean add (E e): Diese Methode fügt dieser Auflistung ein Element hinzu und gibt den Status der Add-Operation zurück.
  2. boolean addAll (Collection c): Diese Methode fügt alle Elemente aus der angegebenen Collection in diese Collection ein und gibt den Status der Add-Operation zurück.
  3. void clear (): Diese Methode entfernt alle Elemente aus dieser Sammlung.
  4. Boolescher Wert enthält (Objekt o): Diese Methode prüft, ob das angegebene Element in der Auflistung vorhanden ist oder nicht. Gibt entsprechend true oder false zurück.
  5. Boolescher Wert enthält (Sammlung c): Diese Methode prüft, ob alle Elemente aus der angegebenen Sammlung in dieser Sammlung vorhanden sind oder nicht, und gibt dementsprechend true oder false zurück.
  6. boolean isEmpty (): Diese Methode prüft, ob die Auflistung leer ist oder nicht und gibt dementsprechend true oder false zurück.
  7. Iterator iterator (): Diese Methode gibt den Iterator für diese Sammlung zurück. Iterator wird verwendet, um alle Elemente in dieser Auflistung zu durchlaufen.
  8. boolean remove (Object o): Diese Methode entfernt das angegebene Element aus der Auflistung und gibt den Status des Entfernungsvorgangs zurück.
  9. boolean removeAll (Collection c): Diese Methode entfernt alle Elemente aus dieser Collection, die in der angegebenen Collection und dieser Collection vorhanden sind.
  10. boolean retainAll (Collection c): Diese Methode entfernt alle Elemente aus dieser Auflistung, die in der angegebenen Auflistung und in dieser Auflistung nicht vorhanden sind.
  11. int size (): Diese Methode gibt die Größe dieser Sammlung zurück.
  12. Object () toArray (): Dies ist eine wichtige Methode, die das Array bildet und zurückgibt, das alle Elemente dieser Auflistung enthält.
  13. T () toArray (T () a): Diese Methode fügt alle Elemente dieser Auflistung zu einem angegebenen Array hinzu und gibt das Array zurück. Wenn die Größe des Arrays kleiner als die Größe dieser Auflistung ist, erstellt es ein neues Array mit Typen, die dem Typ des angegebenen Arrays entsprechen, und gibt es zurück. Wenn die Größe des angegebenen Arrays größer ist als die Größe dieser Auflistung, wird der Nullwert für die verbleibenden Elemente im Array festgelegt und das Array zurückgegeben.

Fazit - Vergleichbar im Java-Beispiel

Zusammenfassend ist die Oberfläche "In Java vergleichbar" sehr nützlich, um Objekte manuell zu vergleichen, Sammlungen und Arrays zu sortieren oder die Sammlung selbst zu sortieren. Wir können Elemente auch basierend auf verschiedenen Attributen der Entität sortieren. Es ist nicht erforderlich, wird jedoch dringend empfohlen, dasselbe Ergebnis aus equals und der "compareTo" -Methode zu erhalten, um das Durcheinander in einer Sammlung zu vermeiden, in der beide Methoden verwendet werden.

Empfohlene Artikel

Dies ist eine Anleitung zu Comparable in Java Example. Hier besprechen wir die Einführung Vergleichbar in Java Beispiel, Sammlung Schnittstelle in Java, etc. Sie können auch durch unsere anderen vorgeschlagenen Artikel gehen, um mehr zu erfahren.

  1. Sortierung in Java
  2. Beste Java IDE
  3. Sequenzen in Python
  4. Oracle String-Funktionen
  5. Komplette Anleitung zum Sortieren in C # mit Beispielen
  6. PL / SQL-Sammlungen | Syntax, Typen, Ausnahmen