こんにちは、HashMap に裏打ちされた Set を使用して、グラフ内で既に通過したエッジを追跡しています。各エッジに格納されているデータのハッシュコードを追加した結果によってセットをキーイングすることを計画していました。
v.getData().hashCode() + wordV.getData().hashCode()
しかし、contains を使用してエッジがセット内にあるかどうかを確認する場合、これはどの程度信頼できるのでしょうか? 仮説的に偽陽性を得ることができませんでしたか? とにかくこれを克服する方法はありますか?
私が懸念する正確な声明は次のとおりです。
edgeSet.contains(v.getData().hashCode() + wordV.getData().hashCode())
ありがとう!
あ、ちなみに私はJavaを使っています。
編集:
私は質問でこれを明確にするべきでした。私のグラフにはエッジ オブジェクトはありません。それぞれがより多くの頂点オブジェクトのリストを保持する頂点オブジェクトがあり、これがエッジです。したがって、あなたの回答と合わせて、次の質問が続くと思います。
オブジェクトではなく、情報への参照を格納するために Set を使用できますか? つまり、頂点のデータ オブジェクトの 2 つのハッシュコードを加算した結果を保存できますか?
EDIT2:
私は実際にハッシュマップに Java ライブラリを使用しています。以下のように宣言します。
Set<Integer> edgeSet = Collections.newSetFromMap(new ConcurrentHashMap<Integer, Boolean>());