7
リンクされたノード構造を不変にする実用的な方法はありますか?
単一リンクリストを作成することにし、内部リンクノード構造を不変にする計画を立てました。 しかし、私は思わぬ障害に遭遇しました。次のリンクされたノード(以前のadd操作から)があるとします。 1 -> 2 -> 3 -> 4 を追加したいと言います5。 これを行うには、ノード4は不変なので、の新しいコピーを作成する必要があります4が、そのnextフィールドをを含む新しいノードに置き換えます5。問題は3、古いものを参照していること4です。追加されていないもの5。今、コピーし3、そのnextフィールドを置き換えて4コピーを参照する必要がありますが、今2は古いものを参照してい3ます... または、言い換えると、追加を行うには、リスト全体をコピーする必要があるようです。 私の質問: 私の考えは正しいですか?構造全体をコピーせずに追加を行う方法はありますか? どうやら「効果的なJava」には推奨事項が含まれています。 クラスを変更可能にする非常に正当な理由がない限り、クラスは不変でなければなりません... これは可変性の良いケースですか? 私はリスト自体について話していないので、これは提案された答えの複製ではないと思います。これは明らかに、インターフェイスに準拠するために変更可能でなければなりません(新しいリストを内部に保持し、getterを介して取得するなどの操作を行わないでください。リストの内部が不変でなければならないかどうかについて話している。