7
有什么实际的方法可以使链接的节点结构不可变?
我决定编写一个单链接列表,并制定了使内部链接节点结构不可变的计划。 不过我遇到了障碍。说我有以下链接的节点(来自先前的add操作): 1 -> 2 -> 3 -> 4 并说我想附加一个5。 为此,由于node 4是不可变的,因此我需要创建的新副本4,但将其next字段替换为包含的新节点5。现在的问题是3参考旧的4;没有附加的5。现在,我需要复制3,并替换其next字段以引用4副本,但是现在2引用的是旧版本3... 换句话说,要执行追加操作,似乎需要复制整个列表。 我的问题: 我的想法正确吗?有什么办法可以执行追加操作而不复制整个结构? 显然,“有效Java”包含以下建议: 类应该是不可变的,除非有充分的理由使它们可变。 这是变异性的好例子吗? 我认为这不是建议答案的重复,因为我不是在谈论清单本身。显然,它必须是可变的才能符合该接口(无需执行诸如在内部保留新列表并通过getter检索它的操作。不过,经过深思熟虑,即使这样也需要进行一些修改;将其保持在最低限度)。我说的是列表的内部是否必须不可变。