任意の型の順序付けられていないペアを表すには、Javaジェネリッククラスが必要です。一方、私は2つの解決策を見ています:
HashSet
ペア要素を格納するPair
オーバーライドされたhashCode
andを持つクラスequals
(makePair(a, b)
とPair(b, a)
equal)。
それは理にかなっていますか?何を提案しますか?
任意の型の順序付けられていないペアを表すには、Javaジェネリッククラスが必要です。一方、私は2つの解決策を見ています:
HashSet
ペア要素を格納するPair
オーバーライドされたhashCode
andを持つクラスequals
(makePair(a, b)
とPair(b, a)
equal)。それは理にかなっていますか?何を提案しますか?
あなたの代わりに、私は自分のクラスを展開します。2 つのオブジェクトのみのセットに関心がある限り、HashMap
, HashSet
(ちなみに、HashMap
内部的に a を使用します) や、任意のカーディナリティのセット用に設計されたその他のクラスを使用すると、リソースが無駄になり、不要な複雑さが追加されます。
equals()
適切なhashCode()
実装で独自のクラスを作成するだけです。操作を行ったり、インターフェイスcontains()
の一部を実装したりすることも理にかなっている場合があります。Set
1 つの重要な注意事項: クラスを広範囲に文書化するようにしてください。少なくともequals()
、含まれているオブジェクトに対して同一比較または等価比較を実行するかどうか、およびnull
含まれている参照の意味を指定してください...