听说 hashmap 很占空间,访问效率不高,对于不需要修改删除的操作(比如用 gson 搭建 API)的场景,是否有更好的 <key, value> 之类的数据类型呢?
听说 hashmap 很占空间,访问效率不高,对于不需要修改删除的操作(比如用 gson 搭建 API)的场景,是否有更好的 <key, value> 之类的数据类型呢?
我实在是不理解访问效率不高和栈空间是什么意思,我猜测之所以这样所是因为如果不指定HashMap的初始容量,默认就是16,而实际上很多的HashMap的使用都不需要这么大的容量,一般在存值的时候可以知道要在Map中存储key-value的个数,直接指定初始化容量就行了,以上仅仅为猜测
听说 hashmap 很占空间,访问效率不高
因为是HashMap
,所以数据存取要计算hashcode,底层数组默认会有25%的空间是浪费掉的
但是这样是为了能够有良好的随机访问能力
也就是说,如果没有随机访问的需求,HashMap确实是浪费的,比如安卓上的ArrayMap
就是针对“没有随机访问”的场景设计的
另外还有像 MultiValueMap
,IntMap
之类的东西,也都是针对特殊场景提供特殊功能或者特殊优化的(虽然都不是jdk自带的)
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
这是fastjson构造函数代码
关于性能,我想fastjson足够满足大部分要求,其内部使用的其实也是hashmap。
所以对于你说的很占空间,访问效率不高我不是很明白。