2011-08-25 210 views
-1

有人可以用簡單的術語解釋哈希碼和哈希集的概念。哈希碼和哈希集的概念

+2

@jeni:見[此](HTTP:// isagoksu.com/2009/development/java/what-is-hash-code/)有關Hashcode的一個很好的參考。 – Khan

回答

0

措施:如果你想提交的東西走了以後檢索http://isagoksu.com/2009/development/java/what-is-hash-code/

,也可以是如果您以數字形式進行文件歸檔而不是通過長字母鍵更快。 hashCode是一種從長字符串或甚至任意字節數組中計算小(32位)摘要數字鍵的方法。數字鍵本身沒有意義,用於計算它們的hashCode函數看起來有點瘋狂。然而,當你去找東西的時候,你可以對你正在查找的長字母鍵進行相同的摘要計算,不管你使用的算法多麼奇怪,你將計算相同的hashCode,並且能夠看用它數字化。當然,總有兩種不同的字符串具有相同的摘要hashCode的可能性。然而,即便如此,一切都不會丟失;它大大縮小了搜索範圍,因此加快了搜索速度。 Hashtable更進一步,將hashCode進一步縮小到更小的數目,它可以用來直接索引數組,通常通過將其除以某個(理想的素數)數字並取其餘部分。

HashSet的創建一個使用哈希表存儲

我希望這有助於

+0

感謝所有回覆。我瞭解hashcode用於識別一個對象,而h ashset是存儲在哈希表中的哈希碼的集合...是否正確 – jeni

+0

是的,根據定義,哈希碼是唯一的,但取決於使用的算法,您可能會碰撞,只要記住這一點。 – Trefex

+0

非常感謝:-) – jeni

0

散列編碼正在存儲在類中的SATA和把他們放在一起在哈希集合。 (一種加密的地方)。我知道這是來自維基百科,但有很好的例子可以解釋給你。

實施例(維基百科(Wiki Hash Code examples

public class Employee{ 
int  employeeId; 
String  name; 
Department dept; 

// other methods would be in here 

@Override 
public int hashCode() { 
    int hash = 1; 
    hash = hash * 17 + employeeId; 
    hash = hash * 31 + name.hashCode(); 
    hash = hash * 13 + (dept == null ? 0 : dept.hashCode()); 
    return hash; 
} 
} 

至於散列設置Oracle.com最好地描述它

Oracle - Hash Set

+0

你的例子有助於我理解這個概念...謝謝 – jeni