5

任意の型の順序付けられていないペアを表すには、Javaジェネリッククラスが必要です。一方、私は2つの解決策を見ています:

  • HashSetペア要素を格納する
  • PairオーバーライドされたhashCodeandを持つクラスequals(makePair(a, b)Pair(b, a)equal)。

それは理にかなっていますか?何を提案しますか?

4

1 に答える 1

3

あなたの代わりに、私は自分のクラスを展開します。2 つのオブジェクトのみのセットに関心がある限り、HashMap, HashSet(ちなみに、HashMap内部的に a を使用します) や、任意のカーディナリティのセット用に設計されたその他のクラスを使用すると、リソースが無駄になり、不要な複雑さが追加されます。

equals()適切なhashCode()実装で独自のクラスを作成するだけです。操作を行ったり、インターフェイスcontains()の一部を実装したりすることも理にかなっている場合があります。Set

1 つの重要な注意事項: クラスを広範囲に文書化するようにしてください。少なくともequals()、含まれているオブジェクトに対して同一比較または等価比較を実行するかどうか、およびnull含まれている参照の意味を指定してください...

于 2012-12-22T10:08:18.563 に答える