我想知道那些类似字典的数据结构(Hashtable,HashMap,LinkedHashMap,TreeMap,ConncurrentHashMap,SortedMap等)是否需要在其大小达到阈值时进行重组操作?因为每当我们调整表格时它都非常昂贵,所以我想知道在调整表格大小或其他任何方法来改善这种操作的性能时还有什么不需要重新散列吗?
答案 0 :(得分:1)
SortedMap(TreeMap)不需要重新散列,它被设计为红黑树,因此是自我平衡的
关闭哈希相关的结构可能需要重新调整以获得性能提升,但这是一种权衡。
所以它可以在不重新散列的情况下实现,这就是为其引入的加载因子参数。
答案 1 :(得分:0)
基于应用程序改进性能估计近似初始容量,并在为数据结构分配内存时选择正确的负载因子。
除非你实现自己的HashMap,否则无法逃避重新散列。
其他一些事实:Rehashing只发生在HashRelated数据结构上,即HashMap,HashTable等。因此,所有非散列数据结构(如treemap,sortedmap(是一个接口,因此我们可以将其从图片中删除)都不会在达到限制时重新散列。
重新调整大小总是在ArrayList达到阈值时发生。因此,如果数据结构之间有大量插入和删除,请使用链接列表。