使用HashMap 存储键值对,哪个速度

使用HashMap 存储键值对,哪个速度,第1张

对于你所说的数据量小于10的情况下,ArrayList<String> 和 HashMap<String, String>误差很小,使用哪个都不会影响性能;但从技术层讨论这个问题,就多啰嗦两句^^

ArrayList是有序集合,其底层其实就是一个数组,如果是遍历的话和存储相对于HashMap还是要快些,但其增加、删除会比较慢,特别是从列表中间增加、删除(扯远了)

而HashMap是一个无序哈希表,他的查询顺序是跟数据量直接关联的,简单点说就是数据量越大,查询越慢!

总结:

小数据:两者均可使用。

大数据:查询频繁使用ArrayList,增删、改频繁,使用HashMap。

超大数据:使用ArrayList;

举个例子,通讯录 a-z 进行分组,2万个好友,如果不进行分组,最差的时候要查2万次,平均找1万次,那么通过建立索引,要提高很多倍了。

但是我要跟大家说一个笑话,如果你的好友全是你的子孙,全跟你姓,那结果还是一样的 哈哈,除非不用姓。

那么 hashmap 是通过hashcode进行散列,hashcode 是如何分组不得而知,但是原理也是一样,尽可能的平均分布 均匀 ,比如1万个数据如果 只有10个组,或者说 100个组里面数据全部在 第一个组,这效率还是一样 速度比简单粗暴的list 更慢了,为什么速度更慢了?

比如1万个数据 分了100个组,但是数据在 第100组,是不是要查找100个组 然后找了100个组还不够,还要继续 循环1万次,这速度当然是没有提升反而更慢了。

那么这速度 平均1万次变成1001万了,搞毛线

再谈谈a-z的排序是否适合中文吧

我们中国有很多姓 ,但是有些字母似乎是用不到,但是如果用姓进行排序,那就可怕了,开个玩笑,over纯笔记,非论文

hashmap 是如何实现散列的呢算法, hashcode和内存地址关联,内存地址是有序的,比如22g那肯定是从xxx-到xxx ,那么如何散列是否跟开辟空间以及空间分配区域有关呢?

两种可选的方式

1:使用yield的懒惰加载,示例代码如下:

123456789101112

def read_in_chunks(file_object, chunk_size=1024): """Lazy function (generator) to read a file piece by piece Default chunk size: 1k""" while True: data = file_objectread(chunk_size) if not data: break yield data f = open('really_big_filedat')for piece in read_in_chunks(f): process_data(piece)

2:使用iter和一个帮助方法:

123456

f = open('really_big_filedat')def read1k(): return fread(1024) for piece in iter(read1k, ''): process_data(piece)

推荐使用第一个。

以上就是关于使用HashMap 存储键值对,哪个速度全部的内容,包括:使用HashMap 存储键值对,哪个速度、[笔记]为什么hashmap查询速度快 如何理解hashmap的散列、用python编程读取TXT时,数据大概有1千万条,速度很慢如何解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9621906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存