Java之TreeMap的初始大小介绍
来源:爱站网时间:2022-04-26编辑:网友分享
在进行java编程的时候,有些朋友会问:为什么Java的TreeMap不允许初始大小?带着这个问题,爱站技术频道小编给大家整理了相关资料,感兴趣的就一起来看一看吧!
问题描述
[加载1 000 000数字需要2秒才能加载到树图(二进制搜索树)中,但是要花费毫秒才能加载到哈希图中(在Java中)。两者之间的唯一区别是,我可以看到的是,我可以设置哈希图的初始大小,因此不必始终调整其大小。
我是否应该假定可以设置TreeMap数组的初始大小?有这么慢的其他原因吗?为什么不能设置TreeMap或任何通用的二进制搜索树的大小,这是否是逻辑上的原因呢?
解决方法:
与HashMap
会在插入新的内部组件时重新分配其内部结构不同,TreeMap
通常不会在添加新的内部组件时对其进行重新分配。可以非常宽松地说明此差异,例如ArrayList
与LinkedList
之间的差异:第一个重新分配以调整大小,而第二个则没有。这就是为什么设置TreeMap
的初始大小与尝试设置LinkedList
的初始大小大致没有意义的原因。
[速度差异是由于两个容器的时间复杂度不同:将N
节点插入HashMap
为O(n)
,而对于TreeMap
则为O(N*LogN)
,对于1000000个节点,大约为20 渐近差。尽管由于各个算法规定的常数不同,渐进复杂度的差异不会直接转换为时序差异,但它是确定哪种算法在很大的输入上将更快的一种好方法。
不知道朋友们看完上述文章后,对这个问题还有没有什么看法,有的话可以来网站联系小编。更多精彩的技术资讯,尽在js.aizhan.com。