2012-08-28 41 views
5

为什么ConcurrentSkipListMap构造函数不允许我们设置initial capacity就像HashMap呢?为什么我无法设置ConcurrentSkipListMap的初始容量?

+0

@MarkoTopolnik skiplist数据结构对我来说是新的。我需要一个有序的映射实现,并且映射必须能够从多个线程中并发地进行修改。因此,我在寻找ConcurrentSkipListmap>我之前使用过Cocurrenthashmap,并且使用了intialCapacity,因此不会发生重新刷新。 – Geek

+0

@Geek - 阅读一本好的数据结构书的时间。 –

+0

@StephenC阅读Cormen et all,但还没有去过SkipLists。覆盖uptill红黑树。 – Geek

回答

6

因为这个数据结构有多个LinkedList的支持,初始容量构造参数没有意义。

HashMap由一个数组(连续内存空间)支持,因为设置一个初始容量是有意义的,因为超过此表的初始大小会导致HashMap重新分配一个新增大小的表昂贵。

+1

(但对于HashMap而言,另一方面,显着高估地图大小也是代价高昂的) –

相关问题