Różnica między porównywalnym i komparatorem w Javie

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 15 Móc 2024
Anonim
Różnica między porównywalnym i komparatorem w Javie - Technologia
Różnica między porównywalnym i komparatorem w Javie - Technologia

Zawartość

Porównywalny i Komparator to ogólne interfejsy w Javie używane do porównywania elementów danych obiektów. Interfejs porównywalny jest obecny w pakiecie java.lang, a interfejs komparatora jest obecny w pakiecie java.util. Podstawową różnicą między interfejsami Porównywalny i Komparator jest to, że Interfejs Porównawczy zapewnia pojedynczą sekwencję sortowania, podczas gdy interfejs Komparator zapewnia wiele sekwencji sortowania. Istnieją inne różnice między interfejsem Porównywalny a Komparator, które przeanalizujemy w Tabeli porównawczej.


  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaPorównywalnyKomparator
Podstawowy Interfejs porównywalny pozwala tylko na jedną sekwencję sortowania.Interfejs komparatora umożliwia wiele sekwencji sortowania.
Pakiety Interfejs porównywalny jest obecny w pakiecie java.lang.Interfejs komparatora jest obecny w pakiecie java.util.
Metody Interfejs porównywalny zawiera tylko jedną metodę
public int compareTo (Object obj);
Interfejs komparatora zawiera dwie metody
public int porównaj (Object obj1, Object obj2)
boolean jest równy (Object obj)
RealizacjaInterfejs porównywalny jest implementowany przez klasę, której obiekty mają być porównywane.Interfejs komparatora jest implementowany przez klasę sperate zamiast klasy, której obiekty mają być porównywane.
Porównanie Metoda CompareTo (Object obj) porównuje obiekt, który jest używany do wywołania metody, a określony obiekt przechodzi do metody.Metoda Compare (Object obj1, Object obj2) porównuje oba określone obiekty, które są przekazywane do metody.
Lista / TablicaGdy należy porównać listę obiektu typu Porównywalnego, klasa Collection udostępnia metodę, tj. Collections.sort (List lst).Gdy trzeba porównać listę obiektów typu Porównywalnego, klasa Collection udostępnia metodę, tj.
Kolekcje.sort (Lista, Komparator).


Definicja porównywalnego

Porównywalny to interfejs dostępny w pakiecie java.lang. Klasa implementuje interfejs komparatora, aby posortować swój obiekt w naturalnej kolejności. Obiekty są sortowane w naturalnej kolejności, co oznacza, że ​​obiekty są porównywane według ich wartości ASCII. Klasy, które implementują interfejs porównywalny to klasy Bajt, Znak, Podwójny, Float, Długi, Krótki, Łańcuch i Liczby całkowite. Nawet klasa Date i Calander również implementuje interfejs porównywalny.

Interfejs porównywalny zawiera tylko jedną metodę, którą jest CompareTo (Object obj). Ta metoda porównuje obiekt użyty do wywołania metody z obiektem określonym w parametrze. Składnia metody jest następująca:

public int compareTo (Object obj);

Zwraca metodę CompareTo (Object obj) 0, gdy oba obiekty porównywane tą metodą zawierają tę samą wartość, zwraca -ve wartość, jeśli obiekt wywołujący jest mniejszy niż określony obiekt i zwraca + ve wartość, jeśli obiekt wywołujący ma większą wartość w porównaniu do określonego obiektu. Klasa Collections zapewnia metodę sortowania do sortowania elementów listy. Elementy listy (i tablicy) typu Porównywalne można sortować za pomocą metody „Collections.sort (List lst)”.


Definicja komparatora

Komparator to interfejs dostępny w pakiecie java.util. Interfejs Komparator nie jest zaimplementowany w klasie, której obiekty mają być porównywane, natomiast osobna klasa implementuje interfejs Komparator, dzięki czemu logika sortowania jest stosowana do każdego elementu danych obiektu w innej klasie. Komparator zawiera dwie następujące metody:

public int porównaj (Object obj1, Object obj2) i boolean jest równy (Object obj)

Powyższa metoda Compare () porównuje pierwszy obiekt obj1 z drugim obiektem obj2. Zwraca metodę Compare () 0 gdy oba obiekty porównywane tą metodą zawierają tę samą wartość, zwraca -ve wartość, jeśli obiekt obj1 jest mniejszy niż wtedy obiekt obj2 i zwraca + ve wartość, jeśli obiekt obj1 ma większą wartość w porównaniu do obiektu obj2. Metody equals () sprawdzają, czy określony obiekt jest równy obiektowi wywołującemu. Zwraca metodę equals () prawdziwe jeśli oba porównywane obiekty są równe, to zwraca fałszywe. Klasa Kolekcje zapewnia metodę sortowania elementów typu listy i typu komparatora. Elementy listy typów komparatora są sortowane przy użyciu metody Kolekcje.sort (Lista, Komparator).

  1. Porównywalny interfejs pozwala na pojedynczą sekwencję sortowania, co oznacza, że ​​można porównywać tylko pojedynczy element danych obiektu w metodzie CompareTo (). Z drugiej strony interfejs Komparator umożliwia wiele sekwencji sortowania, co oznacza, że ​​można porównywać wiele elementów danych obiektu.
  2. Interfejs porównywalny jest implementowany przez klasę, której obiekty mają być porównywane, ponieważ logika sortowania jest zdefiniowana w tej samej klasie. Z drugiej strony interfejs komparatora nie jest implementowany przez klasę, której obiekty mają być porównywane, ponieważ logika sortowania jest zdefiniowana w osobnych klasach, w których każda klasa definiuje sortowanie według pojedynczego elementu danych obiektu, a te klasy definiujące implementują interfejs komparatora .
  3. Interfejs porównywalny znajduje się w pakiecie java.lang, natomiast interfejs komparatora znajduje się w pakiecie java.util.
  4. Interfejs Porównywalny deklaruje tylko jedną metodę, która jest CompareTo (Object obj), podczas gdy interfejs Komparator deklaruje dwie metody, które są, porównaj (Object obj1, Object obj2) i równa się (Object obj).
  5. Metoda CompareTo (Object obj) w programie Porównywalny porównuje metodę wywołującą obiekt z określonym obiektem przekazanym do metody, natomiast metoda porównania (Object obj1, Object obj2) w Komparator porównuje obiekty obj1 z obj2, które są przekazywane do metody.
  6. Klasa Collections zapewnia metodę sortowania „Collections.sort (List lst)” do sortowania obiektów typu Porównywalny. Klasa Kolekcje zapewnia metodę sortowania Kolekcje.sorta (Lista, Komparator) do sortowania obiektów typu Komparator.

Wniosek:

Jeśli chcesz posortować obiekty w porządku naturalnym, możesz użyć porównywalnego interfejsu, w przeciwnym razie chcesz posortować obiekty według dowolnego atrybutu, wówczas użyty zostanie interfejs komparatora.