2012-12-22 22 views
5

任意のタイプの順序なしペアを表すには、Java 汎用クラスが必要です。Javaの順序付けられていないペア

  • HashSetは(Pair(a, b)Pair(b, a)を等しくするために)オーバーライドhashCodeequalsと対要素
  • Pairクラスを格納する:一方私は2つの方法を参照します。

意味がありますか?何をお勧めしますか?

+0

「任意の型の順序付けられていないparis」のコンテナを書く理由は何ですか? –

+2

[JavaのC++ペアとは何ですか?]の複製が可能ですか?(http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in -java) –

+3

@AndrewLogvinovたとえば、順序付けられていないグラフのエッジを考慮することができます。 'Edge(v1、v2)'は 'Edge(v2、v1)'に等しい。 – Michael

答えて

3

私は自分のクラスを展開します。 HashMap,HashSet(とにかく、内部ではHashMapを内部的に使用します)または任意のcardinalityのセット用に設計された他のクラスは、リソースの浪費であり、不要な複雑さを追加します。

equals()hashCode()の実装で独自のクラスを作成するだけです。 オペレーションを持つか、またはSetインターフェイスの一部を実装することも意味をなさないかもしれません。

一つの重要な注意事項:を確認してくださいあなたのクラスが広く文書 - 少なくともequals()が身元や含まれるオブジェクトのための等価比較を行い、そしてnull含まれる基準の意味は何であるかどうかを指定します...

関連する問題