0

我想知道那些类字典的数据结构(Hashtable、HashMap、LinkedHashMap、TreeMap、ConncurrentHashMap、SortedMap 等)在其大小达到阈值时是否需要进行重新散列操作?由于每当我们调整表格大小时它真的很昂贵,所以我想知道在调整表格大小时是否还有其他不需要重新散列的东西或任何提高此类操作性能的方法?

4

2 回答 2

1

SortedMap(TreeMap)不需要rehash,它被设计成红黑树,因此是自平衡的

为了提高性能,可能需要重新散列与封闭哈希相关的结构,但这是一种权衡。

所以它可以在不重新散列的情况下实现,这就是引入的负载因子参数。

于 2012-08-17T14:25:36.093 回答
0

为了提高性能,估计基于应用程序的近似初始容量,并在为数据结构分配内存时选择正确的负载因子。

除非您实现自己的 HashMap,否则无法避免重新散列。

其他一些事实: 重新散列仅发生在 HashRelated 数据结构上,即 HashMap、HashTable 等。因此,所有非散列数据结构,如树形图、排序图(是一个接口,因此我们可以将其排除在外)在达到限制时不会重新散列。

当 ArrayList 达到阈值时,总是会重新调整大小。因此,如果您在数据结构之间有很多插入和删除,请使用链接列表。

于 2012-08-17T14:49:41.083 回答