簡體   English   中英

“等於數組”的哈希函數

[英]Hash Function for “Equal Arrays”

我正在研究Java程序。 在程序中,有一個類在字段中具有整數數組。 該課程必須滿足以下一項要求:

對於此類的兩個實例,如果兩個對應的整數數組包含至少一個公共元素,則兩個類別為“相等”。 否則,它們是不相等的。

覆蓋此類的“等於”方法來滿足此要求並不困難。 但是,我在想出相應的哈希函數來覆蓋hashCode方法時遇到了麻煩。 有人對此類的哈希函數有任何想法嗎? 謝謝。

根據equals()javadoc ,它必須是* transitive的:

對於任何非空參考值x,y和z,如果x.equals(y)返回true,而y.equals(z)返回true,則x.equals(z)應該返回true。

您建議的equals()將在以下示例情況下違反該實現:

  • x包含1
  • y包含12
  • z包含2

因此,即使x將“等於” yy將“等於” z ,但xz也不會“等於”,因為它們不共享任何值。

因此,您的建議存在嚴重缺陷,因此您不應該執行它。

要回答您的問題,這是不可能完成的,因為如果沒有將實例與之進行比較的上下文, hashCode()就無法確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM