Budou dva objekty vždy stejné, když jejich metoda CompareTo () vrátí nulu?
Budou dva objekty vždy stejné, když jejich metoda CompareTo () vrátí nulu?

Video: Budou dva objekty vždy stejné, když jejich metoda CompareTo () vrátí nulu?

Video: Budou dva objekty vždy stejné, když jejich metoda CompareTo () vrátí nulu?
Video: .equals() vs. == in Java - The Real Difference 2024, Prosinec
Anonim

To je doporučil to porovnat s pouze se vrací 0, pokud zavoláte na rovná se na stejné předměty bych vrátit se skutečný: porovnat s (e2) == 0 má to samé booleovská hodnota jako e1. rovná se (e2) pro každé e1 a e2 třídy C. Všimněte si, že null je není instancí žádné třídy a e.

Dále, je možné, aby se rovná () vrátilo false, i když je obsah dvou objektů stejný?

4 Odpovědi. V javě metoda public boolean rovná se ( Objekt obj) se dědí z Objekt . Nicméně implementace metody, jak je definována v Objekt třída je to rovná se metoda bude vrátit pokud a jenom - li a dva objekty srovnávané jsou stejný instance.

Následně je otázkou, proč by měla být metoda CompareTo () konzistentní s metodou equals () v Javě? Je tomu tak proto, že rozhraní mapy je definováno z hlediska rovná se operace, ale mapa provádí všechna klíčová srovnání pomocí svého porovnat s (nebo porovnat) metoda , takže se považují dva klíče rovnat se tímto metoda jsou z hlediska setříděné mapy rovnat se.

S ohledem na to, jaký je rozdíl mezi metodou == equals () a CompareTo ()?

porovnat s : Lexikograficky porovná dva řetězce. rovná se : Porovná tento řetězec se zadaným objektem. porovnat s porovná dva řetězce podle jejich znaků (se stejným indexem) a podle toho vrátí celé číslo (kladné nebo záporné). rovná se() zkontroluje, zda jsou dva objekty stejné nebo ne, a vrátí boolean.

Můžeme přepsat metodu CompareTo?

Přepsat metodu porovnání Měl by vrátit záporné celé číslo (obvykle -1), pokud je aktuální spouštěcí objekt menší než předaný jeden , a kladné celé číslo (obvykle +1), pokud je větší než, a 0, pokud je rovno. metoda srovnání by měl vyvolat výjimku, pokud má předaný objekt nekompatibilní typ nebo hodnotu null.

Doporučuje: