1
我讀過JVM實例中的哈希碼返回相同的值。但在另一個JVM實例中,可能不會返回相同的值。 我嘗試了以下程序:不同機器中字符串的哈希碼返回相同的值
public class demo {
public static void main(String[] args) {
String s = new String("Hello");
System.out.println(s.hashCode());
}
}
這個程序返回的次數量很多我重新運行它在我的機器上相同的值。另外,我嘗試在其他機器上運行相同的程序,並且每次都獲得相同的值。這只是巧合嗎?
我有一個基於字符串值的場景,我將確定下一個業務邏輯。所以目前我在做
switch(s.hashcode()%4){
case 0:....
case 1:....
}
這個工作應該好嗎?
哈希碼是從您的字符串派生而來的,所以相同的字符串將具有相同的哈希值。這不是巧合。 –
如果java有可能修改版本之間String的hashCode實現的實現,那麼可以讓兩個java實例返回不同的哈希碼(如果它們是不同的版本)。我認爲他們認爲價值不能保證是一樣的,並不是說它們保證是不同的。 – hatchet