優れた JGraphT ライブラリを使用して、有向非巡回グラフと Java の練習として Java で Scrabble プログラムを作成しようとしています。
したがって、私のエッジは文字になり、頂点のビットセットはアルファベットのサイズになります。基本的に、グラフを文字ごとにトラバースし、現在のビットセットをチェックして、ルート ノードからたどった文字の弧に追加された場合に、どの文字が単語を形成するかを確認します。
私はそれを理解していますが、私が心配しているのは、JGraphT Javadoc からの次の内容です。
このメソッドは、このグラフの EdgeFactory を使用して新しいエッジ e を作成します。新しいエッジを追加するには、e をグラフの他のエッジと等しくしてはなりません (グラフがエッジの多重度を許可している場合でも)。より正式には、グラフには e2.equals(e) のようなエッジ e2 が含まれていてはなりません。そのような e2 が見つかった場合、新しく作成されたエッジ e は破棄され、メソッドはこのグラフを変更せずに残し、null を返します。
参照が一致しないという意味を除いて、エッジとノードが一意になることはありません。では、私の質問は、Java プログラマーはここで何をするでしょうか?
Letter クラスと BitSet クラスを作成し、equals() をデフォルトのままにしておきます。参照が一致しないため、常に false になりますか? しかし、.equals() が .contains() のように正しいことに依存する他のすべてのメソッドをどのように処理すればよいでしょうか?
実際の Letter クラスと BitSet クラスの薄いラッパーとして Edge クラスと Node クラスを作成し、常に false .equals() を Edge;Node に配置し、実際のクラスを Letter;Bitset? に配置します。
public class Edge { private Letter letter; //getter and setter coming public boolean equals (Object b) { return false; } }
- 他の何か?