5
任意のタイプの順序なしペアを表すには、Java 汎用クラスが必要です。Javaの順序付けられていないペア
HashSet
は(Pair(a, b)
とPair(b, a)
を等しくするために)オーバーライドhashCode
とequals
と対要素Pair
クラスを格納する:一方私は2つの方法を参照します。
意味がありますか?何をお勧めしますか?
任意のタイプの順序なしペアを表すには、Java 汎用クラスが必要です。Javaの順序付けられていないペア
HashSet
は(Pair(a, b)
とPair(b, a)
を等しくするために)オーバーライドhashCode
とequals
と対要素Pair
クラスを格納する:一方私は2つの方法を参照します。意味がありますか?何をお勧めしますか?
私は自分のクラスを展開します。 HashMap
,HashSet
(とにかく、内部ではHashMap
を内部的に使用します)または任意のcardinalityのセット用に設計された他のクラスは、リソースの浪費であり、不要な複雑さを追加します。
equals()
とhashCode()
の実装で独自のクラスを作成するだけです。 オペレーションを持つか、またはSet
インターフェイスの一部を実装することも意味をなさないかもしれません。
一つの重要な注意事項:を確認してくださいあなたのクラスが広く文書 - 少なくともequals()
が身元や含まれるオブジェクトのための等価比較を行い、そしてnull
含まれる基準の意味は何であるかどうかを指定します...
「任意の型の順序付けられていないparis」のコンテナを書く理由は何ですか? –
[JavaのC++ペアとは何ですか?]の複製が可能ですか?(http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in -java) –
@AndrewLogvinovたとえば、順序付けられていないグラフのエッジを考慮することができます。 'Edge(v1、v2)'は 'Edge(v2、v1)'に等しい。 – Michael