数据结构11:哈希表专题

来源:互联网 发布:阿里巴巴产品标题优化 编辑:程序博客网 时间:2024/05/22 05:14

哈希表实现类HashTable

package ch15;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();    }}

键值对定义类

package ch15;/** * 员工信息类 * @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;    }}
原创粉丝点击