Da li će dva objekta uvijek biti jednaka kada njihova compareTo () metoda vrati nulu?
Da li će dva objekta uvijek biti jednaka kada njihova compareTo () metoda vrati nulu?
Anonim

To je preporučio to compareTo samo vraća 0, ako je poziv na jednaki on isti objekti bi povratak istinito: compareTo (e2) == 0 ima isto boolean vrijednost kao e1. jednaki (e2) za svaki e1 i e2 klase C. Imajte na umu da null je nije instanca bilo koje klase, i e.

Nadalje, da li je moguće da jednako () vrati false čak i ako je sadržaj dva objekta isti?

4 odgovora. U Javi metod public boolean jednaki ( Objekat obj) je naslijeđen od Objekat . Međutim, implementacija metode kako je definirana u Objekat klasa je to jednaki metoda će vrati ako i samo ako the dva objekta upoređuju se isto instance.

Nakon toga, postavlja se pitanje zašto bi compareTo () trebao biti konzistentan s metodom equals () u Javi? To je zato što je interfejs mape definisan u smislu jednaki operacija, ali mapa izvodi sva ključna poređenja koristeći svoj compareTo (ili uporedi) metoda , dakle dva ključa koja se smatraju jednaka ovim metoda su, sa stanovišta sortirane karte, jednaka.

Imajući ovo u vidu, koja je razlika između metoda == equals () i compareTo ()?

compareTo : Uspoređuje dva niza leksikografski. jednaki : Uspoređuje ovaj niz sa navedenim objektom. compareTo uspoređuje dva niza prema njihovim znakovima (u istom indeksu) i u skladu s tim vraća cijeli broj (pozitivan ili negativan). jednako() provjerava da li su dva objekta ista ili ne i vraća boolean.

Možemo li nadjačati compareTo metodu?

Nadjačajte compareTo metodu Trebao bi vratiti negativan cijeli broj (obično -1), ako je trenutni objekt koji pokreće manji od proslijeđenog jedan , i pozitivan cijeli broj (obično +1) ako je veći od, i 0 ako je jednak. compareTo metoda treba izbaciti izuzetak ako proslijeđeni objekt ima nekompatibilan tip ili null.

Preporučuje se: