Różnica Między Equals I HashCode W Javie

Spisu treści:

Różnica Między Equals I HashCode W Javie
Różnica Między Equals I HashCode W Javie

Wideo: Różnica Między Equals I HashCode W Javie

Wideo: Różnica Między Equals I HashCode W Javie
Wideo: Подробный видеообзор LG Optimus 3D Max (P725) от сайта Ferumm.com 2024, Listopad
Anonim

Kluczowa różnica - równa się vs hashCode w Javie

Równość jest podobna do operatora ==, który służy do testowania tożsamości obiektu, a nie równości obiektu. HashCode to metoda, za pomocą której klasa niejawnie lub jawnie dzieli dane przechowywane w wystąpieniu klasy na pojedynczą wartość skrótu, która jest 32-bitową liczbą całkowitą ze znakiem. Kluczową różnicą między equals i hashCode w Javie jest to, że equals jest używany do porównywania dwóch obiektów, podczas gdy hashCode jest używany do haszowania, aby zdecydować, do której grupy obiekt należy przypisać.

ZAWARTOŚĆ

1. Omówienie i kluczowe różnice

2. Co jest równe w Javie

3. Co to jest hashCode w Javie

4. Bezpośrednie porównanie - equals vs hashCode w Javie w formie tabelarycznej

5. Podsumowanie

Co jest równe w Javie?

Metoda equals służy do porównywania dwóch obiektów. Domyślna metoda equals jest zdefiniowana w klasie obiektów. Ta implementacja jest podobna do operatora ==. Dwa odwołania do obiektów są równe tylko wtedy, gdy wskazują na ten sam obiekt. Możliwe jest nadpisanie metody równości.

Różnica między equals i hashCode w Javie
Różnica między equals i hashCode w Javie

Rysunek 01: Program Java z równymi

Instrukcja System.out.println (s1.equals (s2)) da odpowiedź fałszywą, ponieważ s1 i s2 odnoszą się do dwóch różnych obiektów. Było podobne do instrukcji System.out.println (s1 == s2);

Instrukcja System.out.println (s1.equals (s3)) da odpowiedź „prawda”, ponieważ s1 i s3 odnoszą się do tego samego obiektu. Było podobne do instrukcji System.out.println (s1 == s3);

W klasie Student nie ma metody równości. W związku z tym wywoływana jest równość w klasie Object. Prawda jest wyświetlana tylko wtedy, gdy odniesienie do obiektu wskazuje na ten sam obiekt.

Różnica między equals i hashCode w Java Figure 02
Różnica między equals i hashCode w Java Figure 02

Rysunek 02: Program Java z przesłoniętym równa się

Zgodnie z powyższym programem, metoda equals jest nadpisywana. Obiekt jest przekazywany do metody i jest rzutowany na Student. Następnie sprawdzane są wartości id. Jeśli wartości id są podobne, zwróci true. Jeśli nie, zwróci fałsz. Identyfikatory s1 i s2 są podobne. Więc wydrukuje prawda. Identyfikatory s1 i s3 są również podobne, więc wyświetli się prawda.

Co to jest hashCode w Javie?

HashCode jest używany w haszowaniu, aby zdecydować, do której grupy należy przypisać obiekt. Grupa obiektów może mieć ten sam hashCode. Prawidłowa funkcja mieszająca może równomiernie rozłożyć obiekty na różne grupy.

Prawidłowy hashCode może mieć następujące właściwości. Załóżmy, że istnieją dwa obiekty, takie jak obj1 i obj2. Jeśli obj1.equals (obj2) ma wartość true, to obj1.hashCode () jest równe obj2.hashCode (). Jeśli obj1.equals (obj2) ma wartość false, nie jest konieczne, aby obj1.hashCode () nie było równe obj2.hashCode (). Dwa nierówne obiekty mogą również mieć ten sam hashCode.

Różnica między equals i hashCode w Java Figure 03
Różnica między equals i hashCode w Java Figure 03

Rysunek 03: Klasa ucznia z równościami i hashCode

Kluczowa różnica między equals i hashCode w Javie
Kluczowa różnica między equals i hashCode w Javie

Rysunek 04: Program główny

Klasa Student zawiera metody equals i hashCode. Metoda equals w klasie Student otrzyma obiekt. Jeśli obiekt ma wartość null, zwróci wartość false. Jeśli klasy obiektów nie są takie same, zwróci wartość false. Wartości id są sprawdzane w obu obiektach. Jeśli są podobne, zwróci prawdę. W przeciwnym razie zwróci fałsz.

W programie głównym tworzone są obiekty s1 i s2. Wywołanie s1.equals (s2) daje wartość true, ponieważ metoda equals jest nadpisywana i sprawdza wartości id dwóch obiektów. Mimo że odnoszą się do dwóch obiektów, odpowiedź jest prawdziwa, ponieważ wartości id s1 i s2 są takie same. Ponieważ wartość s1.equals (s2) jest prawdą, hashCode s1 i s2 powinny być równe. Wydrukowanie hashCode s1 i s2 daje tę samą wartość. Metody hashCode można używać z kolekcjami, takimi jak HashMap.

Jaka jest różnica między equals a hashCode w Javie?

Porównaj środek artykułu przed tabelą

equals vs hashCode w Javie

equals to metoda w Javie, która działa podobnie do operatora ==, który służy do testowania tożsamości obiektu, a nie równości obiektu. hashCode to metoda, za pomocą której klasa niejawnie lub jawnie dzieli dane przechowywane w instancji klasy na pojedynczą wartość skrótu.
Stosowanie
Metoda equals służy do porównywania dwóch obiektów. Metoda jest używana w haszowaniu, aby zdecydować, do której grupy należy umieścić obiekt.

Podsumowanie - równa się vs hashCode w Javie

Różnica w equals i hashCode w Javie polega na tym, że equals jest używany do porównywania dwóch obiektów, podczas gdy hashCode jest używany do haszowania, aby zdecydować, do której grupy należy przypisać obiekt.

Zalecane: