Java之TreeMap的初始大小介绍

来源:爱站网时间:2022-04-26编辑:网友分享
在进行java编程的时候,有些朋友会问:为什么Java的TreeMap不允许初始大小?带着这个问题,爱站技术频道小编给大家整理了相关资料,感兴趣的就一起来看一看吧!

问题描述


[加载1 000 000数字需要2秒才能加载到树图(二进制搜索树)中,但是要花费毫秒才能加载到哈希图中(在Java中)。两者之间的唯一区别是,我可以看到的是,我可以设置哈希图的初始大小,因此不必始终调整其大小。

我是否应该假定可以设置TreeMap数组的初始大小?有这么慢的其他原因吗?为什么不能设置TreeMap或任何通用的二进制搜索树的大小,这是否是逻辑上的原因呢?

解决方法:


HashMap会在插入新的内部组件时重新分配其内部结构不同,TreeMap通常不会在添加新的内部组件时对其进行重新分配。可以非常宽松地说明此差异,例如ArrayListLinkedList之间的差异:第一个重新分配以调整大小,而第二个则没有。这就是为什么设置TreeMap的初始大小与尝试设置LinkedList的初始大小大致没有意义的原因。

[速度差异是由于两个容器的时间复杂度不同:将N节点插入HashMapO(n),而对于TreeMap则为O(N*LogN),对于1000000个节点,大约为20 渐近差。尽管由于各个算法规定的常数不同,渐进复杂度的差异不会直接转换为时序差异,但它是确定哪种算法在很大的输入上将更快的一种好方法。

不知道朋友们看完上述文章后,对这个问题还有没有什么看法,有的话可以来网站联系小编。更多精彩的技术资讯,尽在js.aizhan.com。

上一篇:怎么避免重复创建if语句

下一篇:使用Mockito如何进行controller类测试

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载