Zauważyłem, że w Javie, hashCode
dla HashMap
które zawierają tylko wpisy, gdzie klucz i wartości są takie same, np {1:1}
, {"abc":"abc"}
itp jest zawsze zero. Czy istnieje jakieś uzasadnienie tego dziwnego zachowania?Dlaczego hashcode zero dla HashMap zawierających wartości, które są takie same jak klucze
6
A
Odpowiedz
11
Jest to konsekwencją specification z hashCode()
dla Map.Entry
, która wymaga, aby kody skrótu dla kluczy i wartości były XOR'D.
Jedynymi osobami, które mogą powiedzieć, że , dlaczego został wybrany ten kod skrótu, są ludzie, którzy napisali go oryginalnie, choć mam wrażenie, że Java żałuje, że określam tę (złą) funkcję skrótu.
Powiązane problemy
- 1. Dlaczego otrzymuję zduplikowane klucze w Java HashMap?
- 2. Znajdź dwie linie w pliku, które są takie same
- 3. PHP http_build_query z dwoma kluczami tablicy, które są takie same
- 4. Znajdź liczbę kolejnych elementów, które są takie same, zanim zmieni
- 5. Czy drools są takie same jak jrules?
- 6. Jak sortować klucze HashMap
- 7. Dopasuj, jeśli dwie wartości na niezameldowanej liście są takie same
- 8. Sprawdzanie wszystkie wartości w elemencie są takie same
- 9. Niestandardowa operacja hashcode/equals dla HashMap
- 10. TSQL - NIEKTÓRE | JAKIEKOLWIEK dlaczego są takie same z różnymi nazwami?
- 11. Listy są takie same, ale nie są uważane za równe?
- 12. Czy CDN i Cloud są takie same?
- 13. wykryć, czy dwie ścieżki są takie same
- 14. Sprawdź, czy dwa elementy są takie same
- 15. Znajdź takie same wartości w tablicy przekątnej
- 16. Adresy IP dla domen i ich subdomen są takie same?
- 17. jQuery - jak sprawdzić, czy dwa elementy są takie same?
- 18. Jak przechowywać dane "takie same"?
- 19. Zdobądź klucze HashMap Java
- 20. Czy domyślne wartości wyliczeniowe w C są takie same dla wszystkich kompilatorów?
- 21. System.Web.Optimization pozostają takie same dla pewnych funkcji
- 22. Czy idempotentne funkcje są takie same jak czyste funkcje?
- 23. podane dwa drzewa katalogów, jak znaleźć pliki, które są takie same?
- 24. Kiedy wskaźniki do tego samego obiektu są takie same?
- 25. Jak sprawdzić, czy wszystkie wartości w kolumnach macierzy numpy są takie same?
- 26. Dlaczego są metody natywne hashCode() i getClass()?
- 27. Jak wymienić/wymienić klucze w kluczu Javascript: mapa wartości?
- 28. Dlaczego rejestry x86 są takie, jakimi są?
- 29. mySql: liczba wierszy, które mają takie same dane w kolumnie
- 30. Czy "div> p" i "div p" są takie same?
Boję się spytać, w jaki sposób dowiedziałeś się o tym zachowaniu. Udzielenie odpowiedzi na to pytanie w ciągu minuty jest bardzo imponujące! – dasblinkenlight
@dasblinkenlight Prawdopodobnie spotkał się z tym i pomyślał o tym wcześniej (jak słynna odpowiedź Jima Skeeta na temat nieciągłości). Być może pierwszą rzeczą, którą zrobił, gdy zobaczył pytanie, było sprawdzenie implementacji 'hashCode' w' HashMap'. Tak czy inaczej, wciąż robi wrażenie. –
@ dasblinkenlight dla * osoby *, która działa tak bardzo w podstawowych bibliotekach; to powinno być naprawdę "z półki". – Eugene