In Scala 2.10, MurmurHash
ist aus irgendeinem Grund veraltet, ich sollte jetzt MurmurHash3
verwenden. Aber die API ist anders und es gibt keine brauchbaren scaladocs für MurmurHash3
-> fail.Von MurmurHash zu MurmurHash3 migrieren
Zum Beispiel aktuelle Code:
trait Foo {
type Bar
def id: Int
def path: Bar
override def hashCode = {
import util.MurmurHash._
var h = startHash(2)
val c = startMagicA
val k = startMagicB
h = extendHash(h, id, c, k)
h = extendHash(h, path.##, nextMagicA(c), nextMagicB(k))
finalizeHash(h)
}
}
Wie würde ich dies mit MurmurHash3
stattdessen tun? Dies muss eine schnelle Operation sein, vorzugsweise ohne Zuweisungen, so dass ich keine Product
, Seq
, Array[Byte]
oder was auch immer MurmurHash3
scheint mir anbieten will.
Danke, Rex. Die Samengeneration macht Sinn. Für so 'Produkt' wäre das wahrscheinlich' stringHash (productPrefix) '. –
@ 0__ - Das wäre ein vernünftiger Wert. Es läuft wirklich darauf hinaus, was mit dem gleichen Inhalt, aber mit einer anderen Identität möglich ist; wenn es so etwas nicht gibt (oder es Ihnen nichts ausmacht, damit zu kollidieren), dann können Sie alles oder nichts dort hinstellen. "Kollidieren Sie nur mit Dingen gleichen Namens und gleichen Inhalts (die ebenfalls ein' Produkt' sind und einen Samen mit derselben offensichtlichen Methode gewählt haben) "ist eine sehr vernünftige Politik. –