4

オブジェクトの 2 つのリストを比較したい。リストの等しいオブジェクト (交差) のコレクションを返すメソッドが必要です。ただし、これらのリストのオブジェクトの型は、.equals() 以外のメソッドを使用して比較されます (.isSimilar)。これを行うための合理化された効率的な方法はありますか?

4

5 に答える 5

1

この問題は、アイテム クラスで呼び出すようにisSimilar()設定するか、List 実装の 1 つを拡張するクラスを使用することで回避できます。代わりに使用するメソッドをオーバーライドする必要があります。equals()isSimilar()contains()isSimilar()equals().

于 2013-09-20T22:40:19.377 に答える
1

equals()リストとアイテムの両方で、のセマンティクスを変更しないでください...

とにかく、 Guava の関数型イディオムを使用したいと思うかもしれません:

  • Iterable<Pair<T,T>>のペアで構築された を実装するクラスを定義し、List<T>対応する要素の 1 つのペアから次の要素へと反復を進めます。
  • 1 番目と 2 番目のペアで使用するペアの述語を作成しますisSimilar()
  • を使用しIterables.any(theIterableYouCreated, thePredicateYouCreated)ます。

まだペアクラスを持っていませんか?ここを参照してください。また、異なる長さのケースを処理する必要があります。これは、反復子を作成する前に行うことができます。または、他の方法でそれを行うことができます。

于 2013-09-21T20:39:05.567 に答える