hash試行日記
2036 ワード
コードをつける.
小物を書いて楽しんだ.
私の理解では、hashの実現はhashアルゴリズムを利用して実現された特殊なデータ変換であり、元のデータと変換後のデータはhashアルゴリズムによって関連したい.key値によりストレージ構造でデータを取得します.
ストレージ構造、私の理解は配列とチェーンテーブルです.配列はkeyの関連付けによってチェーンテーブルのヘッダを格納する.データ取得時にkeyで対応するチェーンテーブルの位置を配列で取得し、チェーンテーブルでデータを取得します.
/**
* hash
*
*/
public class CreateHash {
// hash
private Node hashList[];
public CreateHash(int size2) {
Create(size2);
}
/**
* hash
*/
public void Create(int size){
hashList=new Node[size];
}
/**
*
* @param obj
*/
public void Add(Object obj){
int index=HashCode(obj);
if(hashList[index]==null){
hashList[index]=new Node(obj);
}else {
Node node =new Node(obj);
node.setNext(hashList[index]);
hashList[index]=node;
}
}
/**
*
*/
public void PrintAll(){
for(int i=0;i<hashList.length;i++){
int count=1;
Node tempNode=hashList[i];
while(tempNode!=null){
System.out.println(" "+i+" "+" "+count+" :"+tempNode.getObj());
tempNode=tempNode.next;
}
System.out.println(" ");
}
System.out.println(" ");
}
/**
* hash
* @param obj
* @return
*/
private int HashCode(Object obj) {
return obj.hashCode()%10;
}
}
/**
*
*/
public class Node {
public Object obj;
public Node next;
//
public Node (Object obj){
this.obj=obj;
}
//
public Object getObj(){
return obj;
}
//
public Node getNext(){
return this.next;
}
//
public void setNext(Node next){
this.next=next;
}
}
小物を書いて楽しんだ.
私の理解では、hashの実現はhashアルゴリズムを利用して実現された特殊なデータ変換であり、元のデータと変換後のデータはhashアルゴリズムによって関連したい.key値によりストレージ構造でデータを取得します.
ストレージ構造、私の理解は配列とチェーンテーブルです.配列はkeyの関連付けによってチェーンテーブルのヘッダを格納する.データ取得時にkeyで対応するチェーンテーブルの位置を配列で取得し、チェーンテーブルでデータを取得します.