使用哈希算法将字符串映射到数组中
来源:互联网 发布:新编诸子集成知乎 编辑:程序博客网 时间:2024/05/16 01:36
需求
将不同字符串映射到对应数组,数组不够时自动成倍扩容,比如有一个数组String[4],现在准备将不同的string映射到String[4]上,str5时会自动扩容并重新打散。
str1-->String[3]str2-->String[0]str3-->String[2]str4-->String[1]
方案
- 先使用哈希运算,比如用
murmurhash3_x86_32
算法得到一个32位的值a。 - 再用一个掩码取得数组下标,这个掩码可用数组长度-1,比如原始数组长度为4,则掩码为3,3的二进制即为11,与上面的哈希值a做&运算即能得到一个4以内的数b。
- 通过掩码计算出来的值可能会重复,所以可以加个判断,比如对于字符串str2,当所计算的值b数组元素不为空且又不等于str2时,则说明这个坑已经被其他字符串占用了,可以往上一个试试。
while(String[b]!=null && !String[b].equals(str2)){ b++;}if(String[b]==null) String[b]=str2;
- 使用一个变量count用于计算已经使用了多少个坑,当count等于数组一半时就进行扩容,比如扩容到8,这时使用的新掩码为7,二进制即111。
0 0
- 使用哈希算法将字符串映射到数组中
- OC中的数组,常使用的函数,怎样将字符串写到文件中,将数组写到文件中
- 如何将字符串复制到数组中
- 将字符串截取到二维数组中
- [C语言][编程]将字符串分割到字符串数组中
- 使用addScala将SQLQuery自定义查询映射到pojo中
- 将MySQL数据映射到Memcached中
- 将MySQL数据映射到Memcached中
- 将MySQL数据映射到Memcached中
- 将MySQL数据映射到Memcached中
- 使用花生壳将项目映射到公网
- 使用str.insert(),将字符串插入到字符序列中.
- 将long数据存到字符串中并格式化字符串数组
- 将带有逗号的字符串转变为数组添加到添加到ListBox中
- C#将Enum枚举映射到文本字符串
- C# - 将enum类型映射到字符串上
- 使用反射将HttpServletRequest对象中的数据映射到实体类中
- 终于弄懂了keil4,51编程中如何将一个字符串数组复制到另一个字符串数组
- zz_mj_creator
- 视屏播放器,两种不同的方法
- Linux下安装redis
- 样式化加载失败的图片
- 04.JUC 集合
- 使用哈希算法将字符串映射到数组中
- 387. First Unique Character in a String
- Android中的线程和线程池
- JQuery的筛选基础了解
- Opencv学习_3 (Opencv读取视频 &视频进度控制 &写视频)
- how to fix the frame size?
- hdu1686 Oulipo【kmp】
- jdbc连接数据库使用sid和service_name的区别
- 05.JUC 集合