Vergleichbar vs. Komparator in Java

Hauptunterschied zwischen vergleichbar und Komparator in Java

  • Vergleichbar in Java ist ein Objekt zum Vergleichen mit einem anderen Objekt, wรคhrend Comparator ein Objekt zum Vergleichen verschiedener Objekte verschiedener Klassen ist.
  • Vergleichbar bietet das compareTo() Methode zum Sortieren von Elementen in Java, wรคhrend Comparator die compare() Methode zum Sortieren von Elementen in Java.
  • Eine vergleichbare Schnittstelle ist in vorhanden java.lang Paket, wรคhrend die Comparator-Schnittstelle in vorhanden ist java.util Paket.
  • Comparable bietet eine einzelne Sortiersequenz, wรคhrend Comparator mehrere Sortiersequenzen bereitstellt.
  • Comparable wirkt sich auf die Originalklasse aus, wohingegen Comparator keinen Einfluss auf die Originalklasse hat.

Unterschied zwischen Vergleichbar und Vergleicher
Unterschied zwischen Vergleichbar und Vergleicher

Hier habe ich den Unterschied zwischen Vergleichs- und Vergleichsmodell analysiert und werde deren Vor- und Nachteile umfassend bewerten.

Was ist vergleichbar in Java?

Vergleichbar in Java ist ein Objekt, das sich mit einem anderen Objekt vergleicht. Es hilft, die Liste der benutzerdefinierten Objekte zu sortieren. Das Java.lang.Die vergleichbare Schnittstelle sollte von einer Klasse implementiert werden, um ihre Instanzen vergleichen zu kรถnnen. Ein Array von Objekten, die eine vergleichbare Schnittstelle implementieren, wird automatisch sortiert nach Arrays.sort , Collections.sort Methoden.

In Comparable verwendete Methode

Ich mรถchte eine wichtige Methode hervorheben, die ich hรคufig in der Comparable-Schnittstelle verwende:

Vergleichen mit():

Die Methode CompareTo() wird verwendet, um eine natรผrliche Sortierung fรผr einen String durchzufรผhren. Die Bedeutung der natรผrlichen Sortierung ist die Sortierreihenfolge, die fรผr das Objekt gilt, z. B. numerische Reihenfolge zum Sortieren von Ganzzahlen, alphabetische Reihenfolge fรผr Strings usw.

Die Syntax von CompareTo() Methode ist wie folgt:

int compareTo(T obj)

In der obigen Syntax bezeichnet T den Typ der Objekte, die Sie vergleichen mรถchten.

CompareTo() Methode vergleicht das Objekt mit T-Objekt.

Ausgang:

  • Es gibt 0 zurรผck, wenn die Werte gleich sind.
  • Wenn das Objekt einen niedrigeren Wert hat, gibt diese Methode einen negativen Wert zurรผck.
  • Wenn das Objekt einen hรถheren Wert hat, gibt es einen positiven Wert zurรผck.

Ein Beispiel fรผr Vergleichbares in Java

Das folgende Programm von Java Ein vergleichbares Beispiel zeigt den Vergleich zweier Zeichen, โ€žaโ€œ und โ€žbโ€œ. Das Zeichen โ€žaโ€œ steht im Alphabet vor โ€žbโ€œ.

Daher ist die Ausgabe -1. Das Zeichen โ€žbโ€œ steht alphabetisch nach โ€žaโ€œ. Daher ist die Ausgabe 1. Die Zeichen โ€žaโ€œ und โ€žbโ€œ sind beide gleichwertig. Daher ist die Ausgabe 0.

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

Ausgang

Compare To 'a' b is : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

Was ist ein Komparator in Java?

Ein Vergleicher in Java ist ein Objekt zum Vergleichen verschiedener Objekte unterschiedlicher Klassen. Die Komparatorschnittstelle in Java wird auch verwendet, um die Objekte benutzerdefinierter Klassen anzuordnen. Es enthรคlt zwei wichtige Vergleichsschnittstellenmethoden, die als โ€žcompareโ€œ (Objekt obj1, Objekt obj2) und โ€žequalsโ€œ (Objektelement) bezeichnet werden.

Im Komparator verwendete Methode

In meiner Praxis greife ich hรคufig auf die folgenden kritischen Methoden der Komparatorschnittstelle zurรผck:

Vergleichen():

Compare() ermรถglicht es Ihnen, Objekte zu bestellen. Dazu mรผssen Sie eine Klasse erstellen, die eine Komparatorschnittstelle implementiert. Danach mรผssen Sie die Vergleichsmethode รผberschreiben.

Die Syntax des compare() Methode ist wie folgt:

compare(Object obj1, Object obj2)

In der obigen Syntax sind obj1 und obj2 zwei Objekte, die Sie mit der Methode โ€žcompare()โ€œ vergleichen mรผssen. compare() Methode.

Ausgang:

  • Es gibt eine negative Ganzzahl zurรผck, wenn das erste Argument kleiner als das zweite ist.
  • Gibt Null zurรผck, wenn das erste Argument und das zweite Argument gleich sind.
  • Diese Methode kann eine positive Ganzzahl zurรผckgeben, falls das erste Argument grรถรŸer als das zweite ist.

Sie mรผssen sicherstellen, dass die Beziehung transitiv ist. Zum Beispiel ((compare(a, b)>0) && (compare(b, c)>0)), was impliziert, dass compare(a, c)>0 ist.

Ein Beispiel fรผr Vergleichbares in Java

Im Folgenden Java Komparator Beispiel gibt es 6 Variablen. โ€žxโ€œ, โ€žyโ€œ, โ€žpโ€œ, โ€žqโ€œ, โ€žrโ€œ und โ€žsโ€œ. Die Ausgabe ist -1, da der Wert von โ€žxโ€œ ist, 20 ist kleiner als der Wert von โ€žyโ€œ, 30. Die Ausgabe ist 0, weil der Wert von โ€žpโ€œ, 40, gleich dem Wert von โ€žqโ€œ, 40 ist .

import java.lang.Integer; 
public class example { 
    public static void main(String args[]) 
    { 
        int x = 20; 
        int y = 30; 
        // as 10 less than 20, 
        // Output will be a value less than zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.out.println(Integer.compare(p, q)); 
        int r = 20; 
        int s = 7; 
        // as 15 is greater than 8, 
        // Output will be a value greater than zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

Ausgang:

-1
0
1

Gleich():

Equals() prรผft, ob das Zahlenobjekt gleich dem Objekt ist, das als Argument รผbergeben wird, oder nicht.

Die Syntax des equals() Methode ist wie folgt:

public boolean equals(Object o)

Diese Methode benรถtigt zwei Parameter: 1) ein beliebiges Objekt und 2) einen Rรผckgabewert. Es gibt โ€žtrueโ€œ zurรผck, wenn das รผbergebene Argument nicht null ist und ein Objekt eines รคhnlichen Typs mit demselben numerischen Wert ist.

Beispiel fรผr die Equals-Methode:

Im folgenden Beispiel vergleiche ich die vier Variablen miteinander. Drei Variablen sind vom Typ Integer und eine vom Typ Short. Das erste Ergebnis ist falsch, da der Wert von p, der 5 betrรคgt, nicht mit dem Wert von q, der 20 betrรคgt, รผbereinstimmt.

Das zweite Ergebnis ist wahr, weil der Wert der Variablen p und r gleich ist, nรคmlich 5. SchlieรŸlich ist die Ausgabe falsch, da den Variablen p und s unterschiedliche Werte zugewiesen sind.

public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

Ausgang

false
true
false

Unterschiede zwischen Comparable und Comparator in Java

Ich sehe oft Verwechslungen zwischen Java Comparable und Comparator; hier ist der Hauptunterschied:

Unterschied zwischen Comparable und Comparator in Java
Unterschied zwischen Comparable und Comparator in Java

Vergleichsbasis Vergleichbar Comparator
Methodik Vergleichbare Angebote compareTo() Methode zum Sortieren von Elementen in Java. Komparator bietet compare() Methode zum Sortieren von Elementen in Java.
Verpackung Eine vergleichbare Schnittstelle ist in vorhanden java.lang Paket. Eine Komparatorschnittstelle ist vorhanden java.util Paket.
Logik des Sortierens Die Sortierlogik muss in derselben Klasse liegen wie das Objekt, das Sie sortieren mรถchten. Die Sortierlogik sollte in separaten Klassen erfolgen, um unterschiedliche Sortierungen basierend auf unterschiedlichen Objektattributen zu schreiben.
Klassenobjekt Die Klasse, deren Objekte Sie sortieren mรถchten, muss die Comparable-Schnittstelle implementieren. Eine Klasse, deren Objekte Sie sortieren mรถchten, muss keine Komparatorschnittstelle implementieren.
Reihenfolgen sortieren Es bietet einzelne Sortierreihenfolgen. Es bietet mehrere Sortierfolgen.
Sortierreihenfolge Mit dieser Methode kรถnnen die Daten gemรครŸ der natรผrlichen Sortierreihenfolge sortiert werden. Diese Methode sortiert die Daten entsprechend der benutzerdefinierten Sortierreihenfolge.
Klasse Es betrifft die ursprรผngliche Klasse. Das heiรŸt, die tatsรคchliche Klasse wird geรคndert. Es wirkt sich nicht auf die ursprรผngliche Klasse aus, dh die tatsรคchliche Klasse wird nicht verรคndert.
Anwendungsbereich Wird hรคufig in der API nach Kalender, Wrapper-Klassen, Datum usw. implementiert
String
Es ist implementiert, um Instanzen von Klassen von Drittanbietern zu sortieren.
Implementierung Alle Wrapper-Klassen und String-Klassen implementieren vergleichbare Schnittstellen. Die einzigen implementierten Klassen von Comparator sind Collator und RuleBasedColator.

Best Practices bei der Verwendung von Comparator und Comparable in Java

  • Verwenden Sie eine vergleichbare Schnittstelle, wenn der Vergleich fรผr die jeweilige Klasse Standard ist.
  • Sie kรถnnen Lambdas mit einem Komparator verwenden.
  • Viele der verfรผgbaren Kernklassen implementieren eine vergleichbare Schnittstelle.
  • Es ist mรถglich, TreeSet und TreeMap beim Sortieren von Set oder Map zu verwenden.
  • Das compareTo() Die Methode funktioniert sowohl mit Komparatoren als auch mit Vergleichsmethoden.
  • Verwenden Sie die Komparatorschnittstelle nur, wenn Sie < mehr Flexibilitรคt benรถtigen.
  • Das compareTo() Die Methode gibt eine positive Ganzzahl zurรผck, wenn das erste Objekt grรถรŸer als das andere ist, negativ, wenn es kleiner ist, und Null, wenn beide gleich sind.

So wรคhlen Sie zwischen einem Vergleichsobjekt und einem Komparator

Zusammenfassend lรคsst sich sagen, dass meine praktische Erfahrung zeigt, dass die Nutzung von Comparable und Comparator in Java erhรถht unsere Kontrolle รผber die Datensortierung erheblich und verbessert sowohl Leistung als auch Funktionalitรคt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: