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

To je preporučio to usporedi To samo vraća 0, ako je poziv na jednaki na isti objekti bi povratak istina: usporedi To (e2) == 0 ima isto booleova 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, je li moguće da jednako () vrati false čak i ako je sadržaj dvaju objekata isti?

4 odgovora. U Javi metoda public boolean jednaki ( Objekt obj) nasljeđuje se od Objekt . Međutim, provedba metode kako je definirana u Objekt razred je to jednaki metoda će vratiti ako i jedino ako the dva objekta uspoređuju se isti primjer.

Nakon toga, postavlja se pitanje zašto bi compareTo () trebao biti dosljedan metodi equals () u Javi? To je tako jer je sučelje karte definirano u smislu jednaki operacije, ali karta izvodi sve ključne usporedbe koristeći svoj usporedi To (ili usporediti) metoda , dakle dva ključa koja se smatraju jednak ovim metoda su, sa stajališta sortirane karte, jednak.

Imajući to na umu, koja je razlika između metode == jednako () i compareTo ()?

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

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 should baca iznimku ako proslijeđeni objekt ima nekompatibilan tip ili null.

Preporučeni: