2012-08-28 14 views
5

Perché i costruttori ConcurrentSkipListMap non ci consentono di impostare initial capacity come HashMap?Perché non è possibile impostare la capacità iniziale per ConcurrentSkipListMap?

+0

@MarkoTopolnik skiplist sono nuove per me. Ho bisogno di un'implementazione di una mappa ordinata e quella mappa dovrà prosperare modifiche simultanee da più thread. Quindi stavo cercando ConcurrentSkipListmap> ho usato Cocurrenthashmap prima e ho usato intialCapacity in modo che il rehashing non avvenga mai. – Geek

+0

@Geek - tempo di leggere un buon libro delle strutture dati. –

+0

@StephenC Reading Cormen e tutti ma non ancora andati a SkipLists. Alberi neri coperti coperti in rosso. – Geek

risposta

6

Poiché questa struttura dati è supportata da più LinkedList per i quali un parametro del costruttore di capacità iniziale non ha significato.

HashMap è supportato da un array (spazio di memoria contiguo) per il quale ha senso impostare una capacità iniziale perché andando oltre la dimensione iniziale di questa tabella fa sì che HashMap rialloca una nuova tabella con una dimensione maggiore che è molto costosa.

+1

(Ma per HashMap, il rovescio della medaglia è che è anche costoso sovrastimare in modo significativo le dimensioni della mappa ...) –

Problemi correlati