hash表海量查找字符串(java版)
来源:互联网 发布:淘宝上的服装利润多少 编辑:程序博客网 时间:2024/06/05 07:17
哈希表(散列表)是一种非常高效的查找数据结构,在原理上也与其他的查找不尽相同,它回避了关键字之间反复比较的繁琐,而是直接一步到位查找结果。当然,这也带来了记录之间没有任何关联的弊端。应该说,散列表对于那些查找性能要求高,记录之间关系无要求的数据有非常好的适用性。注意对散列函数的选择和处理冲突的方法。
Hash表是使用 O(1)时间进行数据的插入、删除和查找,但是 hash 表不保证表中数据的有序性,这样在 hash 表中查找最大数据或者最小数据的时间是 O(N) 。
当然首先得建立hash表存储字符串。
// 测试hash表的简单应用public class testhash {private String[] name;//关键字private int sum;//当前容量public static void main(String[] args) {// TODO 自动生成的方法存根testhash t=new testhash();t.add("java");t.add("C#");t.add("C++");t.add("C");t.add("pathyn");t.add("VB");t.add("PHP");t.add("shell");t.print();String teststr="C++";if(t.contains(teststr)){System.out.println("YES");}else{System.out.println("NO");}}public testhash(){name=new String[10];sum=0;}//添加字符串到hash表public void add(String s){if(sum>=this.name.length/2){this.refresh();}int start=hash1(s);int i=start;while(name[i]!=null){if(name[i].equals(s)){return ;}i=(i+hash2(s))%name.length;if(i==start){return ;}}name[i]=s;sum++;}//因为长度不够,扩充hash表public void refresh(){testhash t=new testhash();t.name=new String[this.name.length*2];int i=0;for(i=0;i<name.length;i++){if(this.name[i]!=null){t.add(this.name[i]);}}this.name=t.name;this.sum=t.sum;}//正常的hash函数public int hash1(String s){return Math.abs(s.hashCode()%name.length);}//处理冲突的hash函数public int hash2(String s){int result=Math.abs(s.hashCode()%(name.length-1));if(result%2==0){return result+1;}return result;}public boolean contains(String s){int start=hash1(s);int i=start;while(name[i]!=null){if(name[i].equals(s)){return true;}i=(i+hash2(s)%name.length);if(i==start){return false;}}return false;}//打印所有的hash键值对 public void print(){ //输出哈希表中所有元素 for(int i = 0; i < name.length; i ++){ System.out.println(i+":"+name[i]); } }}
0 0
- hash表海量查找字符串(java版)
- 海量路由表可以使用HASH表存储吗-HASH查找和TRIE树查找
- 海量字符串查找
- HASH表(高效查找)
- 查找中的算法----HASH查找,二分查找,堆查找,B树查找,字典树,海量查找
- 查找字符串的hash算法
- 查找字符串的hash算法
- HASH 表用于字符串的查找,可见非常迅速
- 字典树查找字符串(java版)
- 海量字符串中查找重复数
- 查找算法----Hash表
- Hash表查找
- 查找算法----Hash表
- Hash(哈希)查找
- hdu 1880(hash字符串+二分查找)
- 用HASH表进行海量数据搜索
- hash查找//hash函数及建表
- poj2503(字符串hash)
- 《软件架构设计》学习笔记--3--软件架构视图
- Volley图片加载并加入缓存处理
- WebViewJavascriptBridge 解析
- IOS开发之—程序截图
- 关于手机连不上拼命循环弹出“Connection attempts: x远程主机强迫关闭了一个现有的连接 ”的解决办法
- hash表海量查找字符串(java版)
- 时间序列完全教程(R)
- 服务器部署 经常使用的命令
- Android日常开发总结的技术经验60条
- 安卓零基础新手求建议和资料
- iOS应用程序的生命周期及前后台切换,应用的各种状态)
- Hadoop集群节点的动态增加与删除
- 关于修改页面么有加id的错误
- EvenBus3.0 中文翻译(-)How to get started with EventBus in 3 steps