Porównywalny vs Porównywalny w Java

Kluczowa różnica między porównywalnym a komparatorem w Java

  • Porównywalne w Java jest obiektem do porównywania z innym obiektem, natomiast Comparator jest obiektem do porównywania różnych obiektów różnych klas.
  • Porównywalne zapewnia compareTo() metoda sortowania elementów Java, podczas gdy Comparator zapewnia compare() metoda sortowania elementów Java.
  • Porównywalny interfejs jest dostępny w java.lang pakiet, podczas gdy interfejs komparatora jest obecny w java.util pakiet.
  • Comparable zapewnia pojedynczą sekwencję sortowania, podczas gdy Comparator zapewnia wiele sekwencji sortowania.
  • Comparable wpływa na pierwotną klasę, podczas gdy Comparator nie wpływa na pierwotną klasę.

Różnica między porównywalnym a porównawczym
Różnica między porównywalnym a porównawczym

Tutaj przeanalizowałem różnicę między porównywalnym a porównawczym i kompleksowo ocenię ich zalety i wady.

Co jest porównywalne w Java?

Porównywalny z: in Java jest obiektem, który porównuje się z innym obiektem. Pomaga sortować listę niestandardowych obiektów. Java.lang.Porównywalny interfejs powinien zostać zaimplementowany przez klasę w celu porównania jej instancji. Tablica obiektów implementujących porównywalny interfejs jest sortowana automatycznie według Arrays.sort oraz Collections.sort Metody.

Metoda zastosowana w Comparable

Chciałbym podkreślić ważną metodę, której często używam w interfejsie Comparable:

Porównać do():

Metoda CompareTo() jest używana do wykonywania naturalnego sortowania na ciągu. Znaczenie sortowania naturalnego to kolejność sortowania, która ma zastosowanie do obiektu, np. kolejność numeryczna dla sortowania liczb całkowitych, kolejność alfabetyczna dla ciągu itd.

Składnia CompareTo() metoda jest następująca:

int compareTo(T obj)

W powyższej składni T oznacza typ obiektów, które będziesz porównywać.

CompareTo() Metoda porównuje obiekt z obiektem T.

Wyjście:

  • Zwraca 0, jeśli wartości są równe.
  • Jeśli obiekt ma niższą wartość, to ta metoda zwraca wartość ujemną.
  • Jeśli obiekt ma wyższą wartość, zwraca wartość dodatnią.

Przykład porównania w Java

Poniżej przedstawiono program Java porównywalny przykład pokazuje porównanie dwóch znaków „a” i „b”. Znak „a” występuje alfabetycznie przed „b”.

Dlatego wynik wynosi -1. Znak „b” występuje alfabetycznie po „a”. Zatem wynik wynosi 1. Znaki „a” i „b” są równoważne. Zatem wynik wynosi 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"));
    }
}

Wydajność

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

W czym jest komparator Java?

Porównywarka in Java jest obiektem służącym do porównywania różnych obiektów różnych klas. Interfejs komparatora w Java służy również do porządkowania obiektów klas zdefiniowanych przez użytkownika. Zawiera dwie ważne metody interfejsu komparatora, znane jako porównanie (obiekt obj1, obiekt obj2) i równa się (element obiektu).

Metoda stosowana w komparatorze

W mojej praktyce często korzystam z następujących kluczowych metod interfejsu komparatora:

Porównywać():

Compare() umożliwia zamawianie obiektów. Aby to zrobić, musisz utworzyć klasę implementującą interfejs komparatora. Następnie musisz zastąpić metodę porównania.

Składnia compare() metoda jest następująca:

compare(Object obj1, Object obj2)

W powyższej składni obj1 i obj2 to dwa obiekty, które należy porównać za pomocą metody Compare(). compare() Metoda.

Wyjście:

  • Zwraca ujemną liczbę całkowitą, jeśli pierwszy argument jest mniejszy niż drugi.
  • Zwraca zero, jeśli pierwszy argument i drugi argument są równe.
  • Ta metoda może zwrócić dodatnią liczbę całkowitą w przypadku, gdy pierwszy argument jest większy niż drugi.

Musisz upewnić się, że relacja jest przechodnia. Na przykład ((porównaj(a, b)>0) && (porównaj(b, c)>0)), co implikuje porównanie(a, c)>0.

Przykład porównania w Java

w poniższym Java przykład porównawczy, jest 6 zmienne. „x”, „y”, „p”, „q”, „r” i „s”. Wynik wynosi -1 jako wartość „x”, 20 jest mniejsza niż wartość „y”, 30. Wynik wynosi 0, ponieważ wartość „p”, 40 jest równa wartości „q”, 40 .

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)); 
    } 
}

Wyjście:

-1
0
1

Równa się():

Equals() sprawdza, czy obiekt liczbowy jest równy obiektowi przekazywanemu jako argument, czy nie.

Składnia equals() metoda jest następująca:

public boolean equals(Object o)

Ta metoda przyjmuje dwa parametry: 1) dowolny obiekt i 2) wartość zwracaną. Zwraca wartość true, jeśli przekazany argument nie ma wartości null i jest obiektem podobnego typu mającym tę samą wartość liczbową.

Przykład metody równa się:

W poniższym przykładzie porównam ze sobą cztery zmienne. Trzy zmienne są typu integer, a jedna jest typu krótkiego. Pierwszy wynik jest fałszywy, ponieważ wartość p, która wynosi 5, nie jest równa wartości q, która wynosi 20.

Drugi wynik jest prawdziwy, ponieważ wartość zmiennych p i r jest taka sama, czyli wynosi 5. Na koniec wynik jest fałszywy, ponieważ zmiennym p i s przypisano różne wartości.

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));
   }
}

Wydajność

false
true
false

Różnice między porównywalnym a komparatorem w Java

Często widzę zamieszanie pomiędzy Java Porównywalne i komparator; oto główna różnica:

Różnica między porównywalnym a porównawczym w Java
Różnica między porównywalnym a porównawczym w Java

Podstawa porównania Porównywalny z: Komparator
Metoda wykonania Porównywalne oferty compareTo() metoda sortowania elementów Java. Porównywarka zapewnia compare() metoda sortowania elementów Java.
Pakiet Porównywalny interfejs jest dostępny w java.lang pakiet. Interfejs komparatora jest obecny w java.util pakiet.
Logika sortowania Logika sortowania musi należeć do tej samej klasy co obiekt, który chcesz posortować. Logika sortowania powinna znajdować się w oddzielnych klasach, aby móc pisać różne sortowania w oparciu o różne atrybuty obiektów.
Obiekt klasy Klasa, której obiekty chcesz posortować, musi implementować interfejs Comparable. Klasa, której obiekty chcesz posortować, nie musi implementować interfejsu komparatora.
Sekwencje sortowania Zapewnia pojedyncze sekwencje sortowania. Zapewnia wiele sekwencji sortowania.
Kolejność sortowania Ta metoda umożliwia sortowanie danych zgodnie z naturalnym porządkiem sortowania. Ta metoda sortuje dane zgodnie z niestandardową kolejnością sortowania.
Klasa Wpływa na oryginalną klasę. tj. rzeczywista klasa zostaje zmieniona. Nie ma to wpływu na pierwotną klasę, tj. rzeczywista klasa nie ulega zmianie.
Stosowanie Często implementowane w interfejsie API przez klasy Kalendarz, Wrapper, Date i
Strunowy.
Jest zaimplementowany do sortowania instancji klas innych firm.
Wdrożenie Wszystkie klasy opakowań i klasy ciągów implementują porównywalne interfejsy. Jedynymi zaimplementowanymi klasami Comparatora są Collator i RuleBasedColator.

Najlepsze praktyki podczas korzystania z komparatora i urządzenia porównywalnego w Java

  • Użyj porównywalnego interfejsu, jeśli porównanie jest standardowe dla określonej klasy.
  • Możesz użyć lambd z komparatorem.
  • Wiele dostępnych klas podstawowych implementuje porównywalny interfejs.
  • Podczas sortowania zestawu lub mapy można używać TreeSet i TreeMap.
  • compareTo() Metoda działa zarówno z komparatorem, jak i porównywalną.
  • Używaj interfejsu komparatora tylko wtedy, gdy < potrzebujesz większej elastyczności.
  • compareTo() metoda zwróci dodatnią liczbę całkowitą, jeśli pierwszy obiekt jest większy od drugiego, ujemną, jeśli jest mniejsza i zero, jeśli oba są takie same.

Jak wybrać pomiędzy produktem porównywalnym a komparatorem

Podsumowując, moje praktyczne doświadczenie sugeruje, że wykorzystanie funkcji porównawczych i porównawczych w Java znacznie zwiększa naszą kontrolę nad sortowaniem danych, poprawiając zarówno wydajność, jak i funkcjonalność.