Dos objectes sempre seran iguals quan el seu mètode compareTo () retorna zero?
Dos objectes sempre seran iguals quan el seu mètode compareTo () retorna zero?
Anonim

Això és recomanat això comparat amb només torna 0, si una trucada a és igual activat els mateixos objectes faria tornar veritat: comparat amb (e2) == 0 té el mateix valor booleà com e1. és igual (e2) per a cada e1 i e2 de la classe C. Tingueu en compte que null és no és una instància de cap classe, i e.

A més, és possible que equals () torni fals encara que els continguts de dos objectes siguin iguals?

4 respostes. En java el mètode public boolean és igual ( Objecte obj) s'hereta del Objecte . No obstant això, la implementació del mètode tal com es defineix a la Objecte classe és que el és igual mètode serà tornar si i només si el dos objectes que es comparen són els mateix instància.

Posteriorment, la pregunta és, per què compareTo () hauria de ser coherent amb el mètode equals () a Java? Això és així perquè la interfície del mapa es defineix en termes de és igual operació, però un mapa realitza totes les comparacions clau utilitzant-lo comparat amb (o comparar) mètode , doncs dues claus que es consideren igual per això mètode són, des del punt de vista del mapa ordenat, igual.

Tenint això a la vista, quina diferència hi ha entre el mètode == equals () i compareTo ()?

comparat amb : Compara lexicogràficament dues cadenes. és igual : compara aquesta cadena amb l'objecte especificat. comparat amb compara dues cadenes pels seus caràcters (al mateix índex) i retorna un nombre enter (positiu o negatiu) en conseqüència. és igual() comprova si dos objectes són iguals o no i retorna un booleà.

Podem anul·lar el mètode compareTo?

Substituïu el mètode compareTo Hauria de retornar un nombre enter negatiu (normalment -1), si l'objecte activador actual és inferior al passat un , i un enter positiu (normalment +1) si és més gran que, i 0 si és igual. mètode compareTo should llança una excepció si l'objecte passat té un tipus incompatible o nul.

Recomanat: