Co jest porównywalne w Javie?
Porównywalny w Javie to obiekt do porównania z innym obiektem. Pomaga posortować listę obiektów niestandardowych. Interfejs java.lang.Comparable powinien być implementowany przez klasę, aby móc porównać jej instancje. Tablica obiektów implementujących porównywalny interfejs jest automatycznie sortowana według metod Arrays.sort i Collections.sort.
W tym samouczku Porównanie i porównanie w Javie dowiesz się:
- Co jest porównywalne w Javie?
- Co to jest komparator w Javie?
- Metoda zastosowana w Porównywalny:
- Metoda zastosowana w komparatorze:
- Różnica między porównaniem a komparatorem w Javie
- Najlepsze praktyki przy korzystaniu z komparatora i porównywalne w Javie
Co to jest komparator w Javie?
Komparator w Javie to obiekt do porównywania różnych obiektów różnych klas. Interfejs komparatora w Javie jest również używany do porządkowania obiektów klas zdefiniowanych przez użytkownika. Zawiera dwie ważne metody interfejsu komparatorów znane jako compare (Object obj1, Object obj2) i equals (Object element).
KLUCZOWE RÓŻNICE:
- Comparable zapewnia metodę compareTo () do sortowania elementów w Javie, podczas gdy komparator zapewnia metodę compare () do sortowania elementów w Javie.
- Porównywalny interfejs jest obecny w pakiecie java.lang, podczas gdy interfejs komparatora jest obecny w pakiecie java.util.
- Comparable zapewnia pojedynczą sekwencję sortowania, podczas gdy komparator zapewnia wiele sekwencji sortowania.
- Porównywalny wpływa na klasę oryginalną, podczas gdy komparator nie wpływa na klasę oryginalną.
Metoda zastosowana w Porównywalny:
Poniżej przedstawiono ważną metodę używaną w interfejsie porównywalnych:
Porównać do():
CompareTo () służy do wykonywania naturalnego sortowania ciągu. Znaczenie sortowania naturalnego to kolejność sortowania, która ma zastosowanie do obiektu, np. Porządek numeryczny do sortowania liczb całkowitych, porządek alfabetyczny dla ciągu itp.
Składnia metody CompareTo () jest następująca:
int compareTo(T obj)
W powyższej składni T oznacza typ obiektów, które zamierzasz porównać.
CompareTo () porównuje obiekt z T obj.
Wynik:
- Zwraca 0, jeśli wartości są równe.
- W przypadku, gdy obiekt ma mniejszą wartość, ta metoda zwraca wartość ujemną.
- Jeśli obiekt ma wyższą wartość, zwraca wartość dodatnią.
Przykład metody CompareTo ():
Poniższy program porównywalny do języka Java przedstawia porównanie dwóch znaków „a” i „b”. Znak „a” występuje przed „b” alfabetycznie.
Dlatego wynik wynosi -1. Znak „b” występuje po „a” alfabetycznie. Stąd wyjście to 1. Znak „a” i „b” są równoważne. Stąd wyjście 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"));}}
Wynik
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Metoda zastosowana w komparatorze:
Poniżej przedstawiono ważne metody używane w interfejsie komparatora:
Porównać():
Compare () umożliwia zamawianie obiektów. Aby to zrobić, musisz utworzyć klasę, która implementuje interfejs komparatora. Następnie musisz nadpisać jego metodę porównania.
Składnia metody compare () jest następująca:
compare(Object obj1, Object obj2)
W powyższej składni obj1 i obj2 są dwoma obiektami, które należy porównać za pomocą metody compare ().
Wynik:
- 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ą, jeśli 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ównaj (a, c)> 0.
Przykład metody porównania:
W poniższym programie przykładu porównawczego Java jest 6 zmiennych. „x”, „y”, „p”, „q”, „r” i „s”. Wartość wyjściowa wynosi -1 jako wartość „x”, 20 jest mniejsza niż wartość „y”, 30. Wartość wyjściowa 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 zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.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 zeroSystem.out.println(Integer.compare(r, s));}}
Wynik:
-101
Równa się():
Equals () sprawdza, czy obiekt number jest równy obiektowi, który jest przekazywany jako argument, czy nie.
Składnia metody equals () jest następująca:
public boolean równa się (Object o)
Ta metoda przyjmuje dwa parametry 1) dowolny obiekt 2) zwracaną wartość. Zwraca prawdę, jeśli przekazany argument nie ma wartości null i jest obiektem podobnego typu o tej samej wartości liczbowej.
Przykład metody równa się:
W poniższym przykładzie porównujemy ze sobą cztery zmienne. Trzy zmienne są typu integer, a jedna krótka. Pierwszy wynik jest fałszywy, ponieważ wartość p, która wynosi 5, nie jest równa wartości q, czyli 20.
Drugi wynik jest prawdziwy, ponieważ wartość zmiennej p i r jest taka sama, czyli 5. Wreszcie, wynik ma wartość fałsz, ponieważ zmienne p i s mają różne przypisane 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));}}
Wynik
falsetruefalse
Różnica między porównaniem a komparatorem w Javie
Oto główne różnice między Java Comparable a Comparator:
Porównywalny | Komparator |
Comparable udostępnia metodę compareTo () do sortowania elementów w Javie. | Komparator udostępnia metodę compare () do sortowania elementów w Javie. |
Porównywalny interfejs znajduje się w pakiecie java.lang. | Interfejs komparatora jest obecny w pakiecie java.util. |
Logika sortowania musi należeć do tej samej klasy, której obiekt chcesz posortować. | Logika sortowania powinna być w oddzielnej klasie, aby zapisać różne sortowanie w oparciu o różne atrybuty obiektów. |
Klasa, której obiekty chcesz posortować, musi implementować porównywalny interfejs. | Klasa, której obiekty chcesz posortować, nie musi implementować interfejsu komparatora. |
Zapewnia pojedyncze sekwencje sortowania. | Zapewnia wiele sekwencji sortowania. |
Ta metoda umożliwia sortowanie danych zgodnie z naturalną kolejnością sortowania. | Ta metoda sortuje dane zgodnie z niestandardową kolejnością sortowania. |
Wpływa na oryginalną klasę. tj. aktualna klasa została zmieniona. | Nie ma to wpływu na oryginalną klasę, tj. Aktualna klasa nie jest zmieniana. |
Często implementowane w API przez: Calendar, Wrapper classes, Date i String. | Jest zaimplementowany w celu sortowania wystąpień klas innych firm. |
Wszystkie klasy opakowania i klasa String implementują porównywalny interfejs. | Jedyne zaimplementowane klasy komparatora to Collator i RuleBasedColator. |
Najlepsze praktyki przy korzystaniu z komparatora i porównywalne w Javie
- Użyj porównywalnego interfejsu, gdy porównanie jest standardowe dla określonej klasy.
- Możesz używać lambd z komparatorem.
- Wiele podstawowych klas dostępnych w implementuje porównywalny interfejs.
- Możliwe jest użycie TreeSet i TreeMap lub podczas sortowania Set lub Map.
- Metoda compareTo () działa zarówno z komparatorem, jak i porównywalną.
- Korzystaj z interfejsu porównawczego tylko wtedy, gdy
- Metoda compareTo () 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.