В итоге в хэшмапе один объект заменял другой объект, а заметил я это только тогда, когда данные появились с заглавными и строчными буквами, вместо только заглавных. Решением будет в хэшкоде приводить строки в верхний регистр и потом считать от них хэшкод. Может кому-нибудь будет полезно. Но блин, ведь эта ситуация с равными хэшкодами может вылезти где угодно, как бы так отлавливать все такие возможные места?
println("Eu".hashCode() == "FV".hashCode()) -> true
println("Eu" == "FV") --> false
println(Symbol("Eu").hashCode() == Symbol("FV").hashCode()) -> true
println(Symbol("Eu") == Symbol("FV")) -> false
hashcode используется только чтобы положить в бакет, из бакета достается по equals. то что вы описали - невозможно. учите мат часть
джавовая хешмапа не подвержена коллизиям :/
Слушать доклад Шепелева! Ну Руслан указал на ошибки
Обсуждают сегодня