1. 程式人生 > >數據結構---基本數據結構---哈希表

數據結構---基本數據結構---哈希表

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; } }

數據結構---基本數據結構---哈希表