Szczególną cechą HashMap jest to, że w przeciwieństwie do, powiedzmy, zrównoważonych drzew, jej zachowanie jest probabilistyczne. W takich przypadkach zwykle najbardziej pomocne jest mówienie o złożoności w kategoriach prawdopodobieństwa wystąpienia najgorszego przypadku. W przypadku mapy skrótów jest to oczywiście przypadek kolizji w odniesieniu do tego, jak pełna jest mapa. Zderzenie jest dość łatwe do oszacowania.
p kolizja = n / pojemność
Tak więc mapa skrótów z nawet niewielką liczbą elementów prawdopodobnie doświadczy przynajmniej jednej kolizji. Notacja Big O pozwala nam zrobić coś bardziej fascynującego. Zauważ, że dla dowolnej, ustalonej stałej k.
O (n) = O (k * n)
Możemy użyć tej funkcji, aby poprawić wydajność mapy skrótów. Zamiast tego moglibyśmy pomyśleć o prawdopodobieństwie maksymalnie 2 kolizji.
p kolizja x 2 = (n / pojemność) 2
To jest dużo niższe. Ponieważ koszt obsługi jednej dodatkowej kolizji nie ma znaczenia dla wydajności Big O, znaleźliśmy sposób na poprawę wydajności bez faktycznej zmiany algorytmu! Możemy to uogólnić
p kolizja xk = (n / pojemność) k
A teraz możemy zignorować dowolną liczbę kolizji i otrzymać znikome prawdopodobieństwo wystąpienia większej liczby kolizji, niż uwzględnimy. Prawdopodobieństwo można uzyskać do arbitralnie małego poziomu, wybierając właściwe k, a wszystko to bez zmiany rzeczywistej implementacji algorytmu.
Mówimy o tym, mówiąc, że mapa hash ma dostęp O (1) z dużym prawdopodobieństwem