Building pathological input for Java HashMaps - hash collisions generator

5 Likes

Când înveți despre hashmap-uri mereu se menționează coliziunile, dar puțini arată cum poți crea coliziuni în mod intenționat.

Adevărul e că la unele funcții nu prea poți să le faci “reverse engineering”. In Java au optat pentru o funcție foarte simplă, dar m-am uitat și în alte limbaje. Majoritatea funcțiilor de hashing au un seed privat și fără el nu știi să generezi valori “pe foaie”.

Cred că cei din Java au mers pe simplitate, și au adăugat “protecție” pe bucket (după 8 coliziuni pe bucket îl transformă din LinkedList in arbore), astfel tot ai LogN la get.