Hash 使用链接的快速哈希表
试图更好地理解哈希表上的链接。寻找一个简单的表,该表散列一个值,并且只将一个整数与散列的值关联。下面是问题的示例代码Hash 使用链接的快速哈希表,hash,chaining,Hash,Chaining,试图更好地理解哈希表上的链接。寻找一个简单的表,该表散列一个值,并且只将一个整数与散列的值关联。下面是问题的示例代码 /* hash string value return int */ public int hashFunction(String D) { char[] Thing = D.toCharArray(); for(int i=0; i < Thing.length; i++){ ind
/* hash string value return int */
public int hashFunction(String D) {
char[] Thing = D.toCharArray();
for(int i=0; i < Thing.length; i++){
index += Thing[i]; }
return index % TABLE_SIZE;
}
/* hash string value return void */
public void hashFunction(String D) {
char[] Thing = D.toCharArray();
for(int i=0; i < Thing.length; i++){
index += Thing[i];}
int hash = index % TABLE_SIZE;
if(table[hash] == null){
table[hash] = new HashEntry( Level, Value );
}
else{
table[hash].setNext(nd);
}
}
/* miscellaneous code snippet */
if(table[hash] == null){
table[hash] = new HashEntry();
}
else if (Data.compareTo("VAR") == 0) {
Data = inFile.next();
char[] Thing = Data.toCharArray();
for(int i=0; i < Thing.length; i++){
hash += Thing[i];}
hash = hash % TABLE_SIZE;
hm.setIntoHashTable(hash);
Data = inFile.next();
if(Data.compareTo("=") == 0) {
Data = inFile.next();
int value = Integer.parseInt(Data);
hm.getIntoHashTable(he.setValue(value));
}
}
当索引发生冲突时,就会发生链接 假设您有一个表\u SIZE=10 现在必须存储字符串abc,因此哈希值为4 现在,当你要存储字符串cba时,你会得到相同的哈希4 现在,为了在同一索引中存储cba,您将在索引4中创建并存储一个列表 该列表将包含abc和bca。此列表称为链,在同一散列中存储多个值的过程称为链 伪代码如下所示:
if(table[hash] == null)
table[hash] = new ArrayList<HashEntry>();//APPEND ON TO THE LOCATION ALREADY THERE!
table[hash].add(new HashEntry());
该表将声明为:
@SuppressWarnings("unchecked")
List<HashEntry>[] table = new List[TABLE_SIZE];
由于数组和泛型不能顺利进行,您可能必须抑制警告。您可以创建int-generateHashString D和int-insertIntoHashTableString D。generateHash是您的哈希函数。insertIntoHashTable将首先调用generateHash,然后调用insert Logic。您能详细描述一下您的hashfunction吗?什么是int级别,你说的另一个int是什么?请不要在你的问题中大喊大叫…请不要诋毁这个问题你能再描述一下你的hashfunction吗?什么是整数级,你说的另一个整数是什么?