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