1

私が知りたい理由は、ショップ全体で、独自のequals/hashcode関数を指定できるLinkedHashMap/LinkedHashSetの実装を検索したところ、見つからなかったためです。

これをHashMap専用に実装したライブラリがいくつか見つかりました。また、将来のある時点でLinkedHashMap用に実装することを約束していたライブラリもありましたが、まだ実装されていません。

そこで、HMソースを変更して自分で実行し、その後LHMを実装することにしました。

このコードの既存のテストクラスを盗んで、それらを追加/変更できれば素晴らしいと思います。したがって、この質問。

4

1 に答える 1

4

Mapテストを探している場合は、 GuavaのMapTestSuiteBuilderよりも悪い結果になる可能性があります。また、パッケージ内に隣接するコレクションをテストするためのSetTestSuiteBuilderやその他の便利なツール、および近くにある便利なEqualsTesterもあります。(テストの使用方法の例については、Louisのリンクを参照してください。)

LinkedHashMapまた、GuavaのEquivalence.Wrapperタイプのオブジェクトを含む標準を作成することを検討することもできます。基本的に、独自のデザインのandメソッドをEquivalence含む実装を作成し、それを使用して、セット/マップに保持する必要のあるすべてのオブジェクトの軽量ラッパーを作成します。ラッパー上のandは、 /を希望どおりに動作させ、後で使用するためにインスタンスのラップを解除できます。equalshashCodeequalshashCodeSetMap

(当然、Guavaをスキップして、を実装する単一フィールドラッパーオブジェクトを作成することもできますが、Guavaにはすでにコード化されているオブジェクトがあります。equalshashCode

于 2012-10-19T02:27:30.697 に答える