2015-09-09 88 views
-1

因此,散列時碰撞的最大次數n鍵將N - 1,因爲在開始插入散列表時將是空的。N-1衝突的散列函數?

我的問題是,有沒有一個哈希函數產生這個數量的碰撞?

+8

當然。 int hashcode(){return 0;}' –

+0

(或者返回相同值的任何哈希'函數';考慮如果*輸入被使用,那麼它不會完全依賴哈希函數,而且數據 - 這是隨機的/未知的。) – user2864740

+0

@tobias_k您的評論完全,正確和獨特(達到一定的偏移量)可以確定問題的答案。你應該讓它成爲答案,獲得upvotes,並選擇它作爲答案。 – Patrick87

回答

5

爲了生產n-1碰撞爲n對象中,散列函數將不得不爲每個n對象的返回的值完全相同,或者更一般地:對於任何對象相同的值。

因此,創建這種散列函數的一種非常簡單的方法是隻返回一些常數值。

public int hashCode() { 
    return 0; 
} 

當然,您可以返回任何值,而不只是0,只要它是任何對象的相同值。