哈希表查找使用最简单的除数取余法获得数据存放地址即下标,当位置冲突时,采用移位的方法解决。
代码:

   /*** The second constructor* @param paraKeyArray The array of the keys.* @param paraContentArray The array of contents.* @param paraLength The space for the hash table.*/public DataArray(int[] paraKeyArray, String[] paraContentArray, int paraLength) {//Step 1. Initializelength = paraLength;data = new DataNode[length];for (int i = 0; i < length; i++) {data[i] = null;}// of for i//Step 2. Fill the data.int tempPosition;for (int i = 0; i <paraKeyArray.length; i++) {//Hash.tempPosition = paraKeyArray[i] % paraLength;//Find an empty position.while (data[tempPosition] != null) {tempPosition = ( tempPosition + 1) % paraLength;System.out.println("Collision , move forward for key " + paraKeyArray[i]);}// of whiledata[tempPosition] = new DataNode(paraKeyArray[i],paraContentArray[i]);}// of for i}// of the second constructor/*** Hash search.* @param paraKey The given key.* @return The content of the key.*/public String hashSearch(int paraKey) {int tempPosition = paraKey % length;while (data[tempPosition] != null) {if (data[tempPosition].key == paraKey) {return data[tempPosition].content;}// of ifSystem.out.println("Not this one for " + paraKey);tempPosition = ( tempPosition + 1) % length;}// of whilereturn "null";}// of hashSearch/*** Test the hashSearch*/public static void hashSearchTest() {int[] tempUnsortedKeys = { 16, 33, 38, 69, 57, 95, 86 };String[] tempContents = { "if", "then", "else", "switch", "case", "for", "while"};DataArray tempDataArray = new DataArray(tempUnsortedKeys,tempContents,19);System.out.println(tempDataArray);System.out.println("Search result of 95 is: " + tempDataArray.hashSearch(95));System.out.println("Search result of 38 is: " + tempDataArray.hashSearch(38));System.out.println("Search result of 57 is: " + tempDataArray.hashSearch(57));System.out.println("Search result of 4 is: " + tempDataArray.hashSearch(4));}

单元测试结果:

------------------------hashSearch-----------------------
Collision , move forward for key 57
Collision , move forward for key 95
Collision , move forward for key 95
I am a data array with 19 item.
(38,else)  (57,case)  (95,for)  null null null null null null null (86,while)  null (69,switch)  null (33,then)  null (16,if)  null null
Not this one for 95
Not this one for 95
Search result of 95 is: for
Search result of 38 is: else
Not this one for 57
Search result of 57 is: case
Search result of 4 is: null

day42--哈希表相关推荐

  1. 【C#】集合_哈希表_字典_泛型_文件

    数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...

  2. PHP哈希表碰撞攻击原理

    哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 ...

  3. 在C#中应用哈希表(Hashtable)

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  4. 自己写的哈希表以及解决哈希冲突

    哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法. hash.c #include <stdio ...

  5. PHP内核中的哈希表结构

    https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载:https://github ...

  6. 用开放地址法中的线性探查法解决冲突实现哈希表的运算

    为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算. /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表 ...

  7. 散列表查找(哈希表)

    散列函数构造经常要考虑: 1.散列表的长度 2.关键字的长度 3.关键字的分布情况 4.计算散列函数所需的时间 5.记录的查找频率 一个"好"的散列函数应遵循一下两条原则 (1)函 ...

  8. 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表

    写在前面 希望你们看了能够有所收获,同时觉得不错的朋友可以点赞和关注下我,以后还会有更多精选文章分享给大家!大家可以关注一下java提升专栏 java提升​zhuanlan.zhihu.com 什么是 ...

  9. 【数据结构】 哈希表 详解

    目录 1. 概念 引入 2. 冲突 2.1 概念 2.2 避免 2.3 冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节(重点) 2.5 冲突-解决 2.5.1 闭散列 2.6 冲突-解决- ...

  10. 数组-丢失的数字(哈希表法)

    题意: 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数. 示例 1: 输入:nums = [3,0,1] 输出:2 解释:n = 3 ...

最新文章

  1. 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...
  2. C#-自动(也叫隐式)类型转换及规则 018
  3. 流水线、超流水线、超标量技术对比
  4. leetcode131. 分割回文串
  5. 01-复杂度2 Maximum Subsequence Sum (25 分)
  6. oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)
  7. 计算机网络(五)——组建客户机/服务器网络
  8. 最长上升子序列LIS 动态规划 二分查找算法
  9. DropDownList 递归绑定分子公司信息
  10. GsonFormat插件使用
  11. js实现滑动拼图验证码
  12. Win10关闭安全中心的病毒和威胁实时保护
  13. 《自控力》读书笔记思维导图
  14. 台湾省应广科技PMS150C纯IO PWM单片机MCU
  15. vue的v-for循环中图片加载路径问题
  16. 手动修改dns服务器设置,如何修改DNS设置 修改DNS设置方法【详解】
  17. android微信qq分享,android 一键分享 QQ 微信
  18. 微信公众号 Cookie
  19. 英文学习20171221
  20. 升级IDEA时出现Some conflicts were found in the installation area

热门文章

  1. css中,用px自动转化为rem
  2. 洗衣机控制系统c语言编程,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文.doc...
  3. 九章算法 | Google 面试题:Same Number
  4. android 图片字体涂鸦,美字自定义涂鸦图形
  5. 985学计算机的博士生好找工作吗,985博士去“专科”当老师,月薪6000挤破门槛,本科生该何去何从...
  6. Ubuntu 8.04 AMD64平台下Realplayer 11安装指南
  7. fs.aio max nr mysql_MySQL主机该如何配置fs.aio-max-nr
  8. Windows 无法验证此文件的数字签名。原来是这个原因。解决方案1: 关闭Secure Boot
  9. 解决提示“你可能是软件盗版的受害者”
  10. 卡巴斯基简体中文版相关QA(ZT)