2012-08-28 12 views
5

¿Por qué los constructores ConcurrentSkipListMap nos permiten establecer el initial capacity como HashMap?¿Por qué no puedo establecer la capacidad inicial para un ConcurrentSkipListMap?

+0

@MarkoTopolnik Las estructuras de skiplist son nuevas para mí. Necesito una implementación de mapa ordenada y ese mapa tendrá que prosperar modificaciones simultáneas de varios hilos. Por lo que estaba buscando ConcurrentSkipListmap> he usado Cocurrenthashmap antes y usé la intialCapacity para que no ocurra ningún cambio. – Geek

+0

@Geek - hora de leer un buen libro de estructuras de datos. –

+0

@StephenC Reading Cormen et all, pero aún no se ha ido a SkipLists. Cubierto hasta rojo árboles negros. – Geek

Respuesta

6

Porque esta estructura de datos está respaldada por múltiples LinkedList para quienes un parámetro constructor de capacidad inicial no tiene ningún significado.

El HashMap está respaldado por una matriz (espacio de memoria contiguo) para lo cual tiene sentido establecer una capacidad inicial porque pasar el tamaño inicial de esta tabla hace que HashMap reasigne una nueva tabla con un tamaño aumentado que es muy costoso.

+1

(Pero para HashMap, la otra cara es que también es costoso sobreestimar significativamente el tamaño del mapa ...) –

Cuestiones relacionadas