1
爲什麼在任何Int上的Scala方法hashCode()返回相同的數字Scala方法hashCode()在任何Int上都是相同的數字?
爲什麼在任何Int上的Scala方法hashCode()返回相同的數字Scala方法hashCode()在任何Int上都是相同的數字?
因爲這就是如何定義整數的hashCode。
它滿足the contract很好:
- 如果兩個對象是根據
equals(Object)
方法相等,則調用每個兩個對象的hashCode
方法必須產生相同的整數結果。
最重要的是,它符合推薦
- 它不是必需的:如果兩個對象根據
equals(java.lang.Object)
方法是不相等的,然後調用hashCode
方法上兩個對象中的每一個都必須產生不同的整數結果。但是,程序員應該知道,爲不相等的對象產生不同的整數結果可以提高哈希表
事實上的性能,這是一個perfect hash function的一個例子。
你爲什麼期望另一種行爲? – viktortnk 2012-08-03 07:49:02
我假設你的意思是''7.hashCode == 13.hashCode''。你能舉一個例子來說明你的觀察嗎?我無法重現那種行爲。 – 2012-08-03 07:49:20
@mhs,你是什麼意思?我沒有'7.hashCode == 13.hashcode':http://ideone.com/sjWYH – aioobe 2012-08-03 08:08:22