Două obiecte vor fi întotdeauna egale atunci când metoda lor compareTo () returnează zero?
Două obiecte vor fi întotdeauna egale atunci când metoda lor compareTo () returnează zero?

Video: Două obiecte vor fi întotdeauna egale atunci când metoda lor compareTo () returnează zero?

Video: Două obiecte vor fi întotdeauna egale atunci când metoda lor compareTo () returnează zero?
Video: How does compareTo method works internally in Java? 2024, Noiembrie
Anonim

Aceasta este a recomandat ca compara cu numai se intoarce 0, dacă un apel către egală pe aceleași obiecte ar întoarcere Adevărat: compara cu (e2) == 0 are la fel valoare booleană ca e1. egală (e2) pentru fiecare e1 și e2 din clasa C. Rețineți că nul este nu o instanță a vreunei clase și e.

În plus, este posibil ca egalul () să returneze false chiar dacă conținutul a două obiecte este același?

4 Răspunsuri. În java metoda public boolean egală ( Obiect obj) este moștenit de la Obiect . Cu toate acestea, implementarea metodei așa cum este definită în Obiect clasa este că egală metoda va întoarce dacă si doar dacă cel două obiecte fiind comparate sunt cele la fel instanță.

Ulterior, întrebarea este, de ce compareTo () ar trebui să fie consecvent cu metoda equals () în Java? Acest lucru se întâmplă deoarece interfața Hartă este definită în termeni de egală operație, dar o hartă efectuează toate comparațiile cheie utilizând-o compara cu (sau compara) metodă , deci două chei care sunt considerate egal de aceasta metodă sunt, din punctul de vedere al hărții sortate, egal.

Ținând cont de acest lucru, care este diferența dintre metoda == equals () și compareTo ()?

compara cu : compară două șiruri lexicografic. egală : compară acest șir cu obiectul specificat. compara cu compară două șiruri după caracterele lor (la același index) și returnează un număr întreg (pozitiv sau negativ) în consecință. este egal() verifică dacă două obiecte sunt identice sau nu și returnează un boolean.

Putem suprascrie metoda compareTo?

Ignorați metoda compareTo Ar trebui să returneze un număr întreg negativ (de obicei -1), dacă obiectul de declanșare curent este mai mic decât cel transmis unu , și întreg pozitiv (de obicei +1) dacă este mai mare decât și 0 dacă este egal. metoda compareTo ar trebui să arunce o excepție dacă obiectul trecut are un tip incompatibil sau nul.

Recomandat: