すでにシリアル化されたデータ、つまりキーと値の両方がバイト配列であるヘーゼルキャストマルチマップとマップを使用しようとしています。以下に示すように、期待どおりに機能しません。
javadocでは、「gotchas」セクションで、ハッシュはシリアル化された形式のhazelcastによって処理され、hashCodeおよびequals(バイト配列の場合はオーバーライドされません)の実装に依存しないことに注意してください。ですから、どうやらObject.hashcodeが使われているのかわかりません。
バイト配列でヘーゼルキャストマップを使用する方法を誰かに教えてもらえますか?
適切にオーバーライドされたハッシュコード/等しいメソッドを使用してバイト配列ラッパーを格納する義務がありますか?
助けてくれてありがとう。
問題:
scala> val mm:MultiMap[Array[Byte], Array[Byte]] = hi.getMultiMap("test-baMuMa")
mm: com.hazelcast.core.MultiMap[Array[Byte],Array[Byte]] = MultiMap [test-baMuMa]
scala> mm.put("a".getBytes,"b".getBytes)
res29: Boolean = true
scala> mm.put("a".getBytes,"b".getBytes)
res30: Boolean = true
// => should return false..
scala> mm.remove("a".getBytes,"b".getBytes)
res31: Boolean = false
// => should return true
scala> mm.containsEntry("a".getBytes,"b".getBytes)
res32: Boolean = false
// => should return true (confirmed that removal did not occur)