2016-11-30 12 views
9

Od wersji Java8 nasza ukochana HashMap zachowuje się trochę inaczej. Jeśli klucz implementuje porównywalny interfejs, każdy skrót zawiera zrównoważone drzewo zamiast połączonej listy.Czy istnieje scenariusz, w którym implementacja Hashmap Java7 jest preferowana do implementacji Java8

Zmniejsza to złożoność najgorszego czasu w przypadku kolizji z O(n) do O(log(n)) patrz JEP180

Czy istnieje sytuacja, w której modernizacja z Java7 do Java8 spowodowałoby pogorszenie wykonania HashMap wyniku?

+4

Chyba wydajność ulegnie pogorszeniu, jeśli masz naprawdę powolne wdrażanie 'compareTo'. ;) – marstran

Odpowiedz

2

Java8 użyje zrównoważone drzewo liczby wpisów w wiadrze w> N, gdzie N jest wybranej empirically i listy użytku po raz kolejny, że jeśli liczba jest < K. będę oczekiwać gorsze wyniki, jeśli liczba wpisów w wiadrze zmiany w sposób, w jaki często występuje "treefyng/untreeifying". To może się zdarzyć z powodu specyficznej funkcji skrótu.

Również nie jestem pewien, czy napowietrznych do tworzenia i wysyłania zapytań drzewo jest warte zysk dla małej N.