HatTrieの種類で使用するHashSet [Array [Byte]]を作成するときに、この問題が発生しました。HashSetでの代替比較の使用
明らかに、アイデンティティのアレイチェックで標準のequals()メソッドが使用されています。どのように要素がセットに含まれているかどうかをチェックするために.deepEquals()を使う代わりのComparatorをHashSetに与えることはできますか?
基本的に、私は、このテストに合格したい:
describe ("A HashSet of Byte Array") {
it("must contain arrays that are equivalent to one that has been added") {
val set = new HashSet[Array[Byte]]()
set += "ab".getBytes("UTF-8")
set must contain ("ab".getBytes("UTF-8"))
}
}
それらの多くがありますので、私は実行可能に別のオブジェクトへの配列[バイト]をラップすることはできません。この目的のために新しいHashSet実装を書くのに手間がかかりません。
もちろん、注文に依存する変更可能なデータ構造とコンテナの危険な組み合わせについてはもちろんです。私はプロトタイプでこれを試していただけで、動作させるための素早い方法が利用可能かどうか疑問に思っていました。これはそうではないようです。私は、正しいソリューションは、私が必要とするequalsメソッドで不変のバイト配列を実装するクラスを作成することになると思います。 –
Btw、もう一度あなたの答えを読んで、私はあなたが実際に "サブクラスのバイト配列"を言うことを意味しているのだろうか?HashSetはequalsメソッド(HashSetのPimp My Classもそうでない)を助けないだろう。 –