哈希表的java实现

发布时间:2023-05-16 09:18:03

散列表(Hash table,也叫哈希表),是基于关键码值(Key value)直接访问的数据结构。也就是说,它通过将关键代码值映射到表中的一个位置来访问记录,以加快搜索速度。该映射函数称为散列函数,存储记录的数组称为散列表。

/** * 员工信息类 * @author Administrator * */public class Info {private String key;private String name;public Info(String key, String name) {this.key = key;this.name = name;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
import java.math.BigInteger;public class HashTable {private Info[] arr;/** * 默认结构方法 */public HashTable() {arr = new Info[100];}/** * 指定数组的初始化大小 */public HashTable(int maxSize) {arr = new Info[maxSize];}/** * 插入数据 */public void insert(Info info) {arr[hashCode(info.getKey())] = info;}/** * 查找数据 */public Info find(String key) {return arr[hashCode(key)];}public int hashCode(String key) {//int hashVal = 0;//for(int i = key.length() - 1; i >= 0; i--) {//int letter = key.charAt(i) - 96;//hashVal += letter;//}//return hashVal;BigInteger hashVal = new BigInteger("0");BigInteger pow27 = new BigInteger("1");for(int i = key.length() - 1; i >= 0; i--) {int letter = key.charAt(i) - 96;BigInteger letterB = new BigInteger(String.valueOf(letter));hashVal = hashVal.add(letterB.multiply(pow27);pow27 = pow27.multiply(new BigInteger(String.valueOf(27)));}return hashVal.mod(new BigInteger(String.valueOf(arr.length))).intValue();}}
public class TestHashTable {public static void main(String[] args) {HashTable ht = new HashTable();ht.insert(new Info("a","张三");ht.insert(new Info("ct"李四");ht.insert(new Info("wangwu","王五");System.out.println(ht.find("a").getName());System.out.println(ht.find("ct").getName());}}

上一篇 Java算法 关键字提取 java从文章中提取关键词
下一篇 LeetCode面试题:寻找旋转排序数组中的最小值 II

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题