举个例子,通讯录 a-z 进行分组,2万个好友,如果不进行分组,最差的时候要查2万次,平均找1万次,那么通过建立索引,要提高很多倍了。
但是我要跟大家说一个笑话,如果你的好友全是你的子孙,全跟你姓,那结果还是一样的 哈哈,除非不用姓。
那么 hashmap 是通过hashcode进行散列,hashcode 是如何分组不得而知,但是原理也是一样,尽可能的平均分布 均匀,比如1万个数据如果 只有10个组,或者说 100个组里面数据全部在 第一个组,这效率还是一样 速度比简单粗暴的list 更慢了,为什么速度更慢了?
比如1万个数据 分了100个组,但是数据在 第100组,是不是要查找100个组 然后找了100个组还不够,还要继续 循环1万次,这速度当然是没有提升反而更慢了。
那么这速度 平均1万次变成100*1万了,搞毛线
再谈谈a-z的排序是否适合中文吧
我们中国有很多姓 ,但是有些字母似乎是用不到,但是如果用姓进行排序,那就可怕了,开个玩笑,over.纯笔记,非论文
hashmap 是如何实现散列的呢??算法, hashcode和内存地址关联,内存地址是有序的,比如22g那肯定是从xxx-到xxx ,那么如何散列是否跟开辟空间以及空间分配区域有关呢?