2012-08-28 4 views
5

Dlaczego konstruktorzy ConcurrentSkipListMap nie pozwalają na ustawienie initial capacity jak HashMap?Dlaczego nie mogę ustawić początkowej pojemności dla ConcurrentSkipListMap?

+0

@MarkoTopolnik to nowe dla mnie konstrukcje danych. W pewnym sensie wymagam posortowanej implementacji mapy i ta mapa będzie musiała rozwijać równoczesne modyfikacje z wielu wątków. Kiedy szukałem ConcurrentSkipListmap> użyłem Cocurrenthashmap przed i użyłem intialCapacity, tak aby rehashowanie nigdy się nie zdarzyło. – Geek

+0

@Geek - czas na przeczytanie dobrej książki z danymi. –

+0

@StephenC Czytanie Cormen et all, ale jeszcze nie przeszedł do SkipLists. Zakryte uptill czerwone Czarne drzewa. – Geek

Odpowiedz

6

Ponieważ ta struktura danych jest wspierana przez wiele LinkedList, dla których początkowy parametr konstruktora pojemności nie ma znaczenia.

HashMap jest wspierany przez tablicę (ciągłe miejsce w pamięci), dla której ma sens ustalanie początkowej pojemności, ponieważ przekroczenie początkowego rozmiaru tej tabeli powoduje, że HashMap ponownie przydziela nową tabelę ze zwiększonym rozmiarem, który jest bardzo kosztowny.

+1

(Ale w przypadku HashMap odwrotne jest to, że kosztowne jest znaczne przeszacowanie rozmiaru mapy ...) –

Powiązane problemy