數據結構---基本數據結構---哈希表
阿新 • • 發佈:2019-03-07
turn 地址 clas com style 可選 setvalue insert .get
1、概述
1.1 哈希表:是一種數據結構,提供了快速插入、查找的操作;
1.2 哈希表基於數組實現;
1.3 哈希化:
a,key為數字:
將key作為數組索引;
b,key為字母:
將字母轉換成ASCII碼值,然後進行相加;(問題:轉換後的hash值很容易相等)
冪的連乘;(問題:轉換後的hash值很大)
壓縮可選值:對轉換後的hash值取余(問題:轉換後的hash值沖突)
解決:開放地址法、鏈地址法
package com.exiuge.mytest.hashtable; public class Info { private String key; private String value; public Info(){ } public Info(String key,String value){ this.key=key; this.value=value; } public String getKey() { return key; }public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
package com.exiuge.mytest.hashtable; public class HashTable { private Info[] arr;public HashTable(){ arr=new Info[50]; } /** * insert * @param info */ public void insert(Info info){ arr[hashCode(info.getKey())]=info; } /** * find * @param key * @return */ public Info find(String key){ return arr[hashCode(key)]; } /** * hash值轉換 * @param key * @return */ public int hashCode(String key){ int hashValue=0; int mi=27; for (int i=key.length()-1;i>=0;i--) { int letter=key.charAt(i)-96; hashValue+=letter*mi; } return hashValue%arr.length; } }
數據結構---基本數據結構---哈希表