2012-08-28 4 views
5

Warum erlaubt uns der ConcurrentSkipListMap Erbauer nicht, die initial capacity wie HashMap zu setzen?Warum kann ich die Anfangskapazität für eine ConcurrentSkipListMap nicht festlegen?

+0

@MarkoTopolnik skiplist Datenstrukturen sind neu für mich. Ich benötige eine sortierte Kartenimplementierung und diese Karte muss gleichzeitige Änderungen von mehreren threads gedeihen.Daher suchte ich nach ConcurrentSkipListmap> ich habe vorher Cocurrenthashmap verwendet und die intialCapacity verwendet, so dass das erneute hashing nie passiert. – Geek

+0

@Geek - Zeit, ein gutes Datenstrukturbuch zu lesen. –

+0

@StephenC Lesen Cormen und alle, aber noch nicht zu SkipLists gegangen. Bedeckte uptill rote schwarze Bäume. – Geek

Antwort

6

Da diese Datenstruktur von mehreren LinkedList unterstützt wird, für die ein anfänglicher Kapazitätskonstruktorparameter keine Bedeutung hat.

Die HashMap wird von einem Array (zusammenhängender Speicherplatz) unterstützt, für das es sinnvoll ist, eine Anfangskapazität festzulegen, da die HashMap eine neue Tabelle mit einer größeren Größe neu zuordnet, die sehr groß ist teuer.

+1

(Aber für HashMap ist die Flip-Side, dass es auch teuer ist, die Größe der Karte deutlich zu überschätzen ...) –

Verwandte Themen