グラフ自体を変更する、メモリ内のグラフでいくつかの操作を実行しています。これらの操作を何回か繰り返す必要があり、その後の繰り返しはグラフの新しいコピーで機能する必要があります。グラフはファイルを解析することによって生成されるため、繰り返しごとにファイルを再解析するのに時間を費やしたくないので、元のグラフのクローンを作成する道をたどりました。
node
、edge
およびタイプgraph
はすべて を実装ICloneable
していますが、循環参照チェーンに問題があります。
Node
Edge
そこからの指示された のリストを保存します。Edge
重みとNode
それが指している を保存します。2 つのノードが双方向のエッジを共有しているStackOverflowException
場合、いずれかのノードのクローンを作成しようとするとエラーが発生します。これは、いずれかのノードのエッジのリストをクローンすることは、常に他方のノードをクローンすることを意味するためです。
クローニングの目的でこの循環参照を解決するための最良のアプローチは何でしょうか?