В чем разница в хэш-карте Java 7 и Java 8, когда оба работают по алгоритму постоянной сложности? Согласно моему пониманию хэш-поиск карт в постоянное время, генерируя хэш-ключ для объекта через хеш-функцию.Разница в хэш-карте в java 7 и 8
ответ
В Java 7 после вычисления хэша из хеш-функции, если более одного элемента имеет один и тот же хэш, чем при поиске по линейному поиску, поэтому сложность это (n). В Java 8 этот поиск выполняется бинарным поиском, поэтому сложность станет log (n). Таким образом, это понятие неверно, что хеш-карта ищет объект в постоянной сложности, потому что это не так.
На самом деле существует порог, описанный в JEP180, когда один ковш/bin имеет более TREEIFY_THRESHOLD = 8 записей, он будет преобразован в дерево. В Java 7, где коллизии были линейно искажены, существовала защита DOS: случайное семя Xord с хешами, чтобы сделать их менее предсказуемыми. Эта функция удалена в Java 8. – eckes
Если мы углубимся в реализацию, это именно то, что вы объяснили @eckes – MDaniyal
Возможно, вы столкнулись с последними проблемами специалиста Java newsletter. В течение многих лет он изучает хеширование на Java; например, указывая на то, что вам лучше убедиться, что ваши ключи карты реализуют Comparable (при использовании Java8).
- 1. разница подстановочных Java в 7 и 8
- 2. Разница в часовых поясах в Java 8 и Java 7
- 3. Разница в JAXB Java 7 по сравнению с Java 8
- 4. Java 7/8 в Android?
- 5. Параметры запроса параметров запроса 7/8 Java 7/8
- 6. Использование Java 7 HashMap в Java 8
- 7. Операторы равенства javac в java 7 и java 8
- 8. Разница между использованием Java 6 и java 7 в android
- 9. Swich from Java 6, 7 и 8
- 10. Разница UTF-8 между оракулом и java
- 11. Java 8 - Разница между опцией.flatmap и Optional.map
- 12. В чем разница между потоками и коллекциями в Java 8
- 13. Tomcat 7 и Java 8 проблема совместимости
- 14. 32-разрядная оптимизация кучи в Java 7 и 8
- 15. Java 7 sun. * Classes with Java 8
- 16. Java 8 производительность VS. Java 7
- 17. Параллелизация (Java 8) vs Concurrency (Java 7)
- 18. Разница между PostMessage на окнах 7 и окнах 8
- 19. Какая разница в использовании UseParallelGC между Java6 и Java 7
- 20. Java 8: В чем разница между Instant и LocalDateTime?
- 21. В чем разница между java 8 ZonedDateTime и OffsetDateTime?
- 22. Какая разница в Java 8 Stream.parallel и Scala trait Parallelizable.par
- 23. разница между потоком() отображение() и stream.map ({}) в Java 8
- 24. Java 8 to Java 7 Код
- 25. Есть Java 8 для Luna и Java 7 для Juno
- 26. Спарк пример Java 7 для Java 8
- 27. Включить Java 7 классы ODBC в Java 8
- 28. Разница между Java EE 7 и Java EE 6
- 29. Java - разница между Java 8 parallelStream и создания нитей сеБЯ
- 30. Разница между Java 6 и java 7 Swing
@MDaniyal ответил правильно, не используя фразу, описывающую ситуацию двух или более элементов, имеющих один и тот же хеш: «хеш-столкновение». Если вы хотите глубже входить в хеш-коллизии вообще, я рекомендую начать здесь: https://en.wikipedia.org/wiki/Hash_table#Collision_resolution – Jeutnarg