比HashMap更快的查询

比HashMap更快的查询

后面会附上代码,先说一下逻辑

用到了一个树,我也不知道以前有没有出现过,但我感觉应该有,就先叫他方树吧:

比HashMap更快的查询

就是图中这样,肯定有大佬已经看懂了
横向是0-9的一个数组,纵向是数组0代表一个0-9的数组,向下延伸,上图
比HashMap更快的查询
就是这样一个结构,每一次递归向下拿,每一次去根据key转成int数组的当前数字,去数组中直接取,也就是最多也超不过10次的io 就可以取到数组中指定的位置,
然后直接从数组中把value拿出来,然后再递归取到key对应的数据(hash碰撞使用hashmap方法解决),这个逻辑想象中一定是比hashmap快的对吧

好了,起始我想问个问题,他并不比hashmap快,甚至慢了很多,说说具体原因,
当我将所有数据put进去以后,就会导致我的hashcode操作性能急剧下降,我打断点看占用是3.5G内存,我电脑是32G内存,比如和hashmap执行同一个函数,hash(),向hashmap写入一千万数据执行是600毫秒,向我的map中写入一千万数据,在执行这个函数,耗费1100毫秒,hashmap存储一千万数据用了1.9G内存,现在还没找到慢的原因,所以来问一下各位大佬,附上代码

https://gitee.com/dianpingche/map.git

里面有两套代码,类名是Demo的类是运行上述代码的,
另一套代码就是把key分割,然后存在node中,这个顺序查询确实是比hashmap顺序查询快的

上一篇:JAVA集合框架合集


下一篇:Async Function 背后的秘密