【问题标题】:Cloning references?克隆参考?
【发布时间】:2014-07-03 22:33:28
【问题描述】:

这可能是一个过于具体的问题,但我希望有一个更通用的解决方案来解决我的问题。


我有课。在这个类中是具有许多父/子节点的树型结构。在这个类中还有一个数组,其中填充了对该树型结构中每个节点的引用。


树的目的是让每个节点知道在屏幕上绘制自己的位置(每个节点都有基于其父级位置的相对位置信息)。

Array 的目的是绘制顺序,我只是先绘制在 Array[0] 处引用的任何节点,依此类推。 (因此,节点不一定按照它们在树中出现的顺序绘制)。


我的问题是这个。我想克隆这个包含这两个对象的整体类(带有节点的树和引用所述节点的数组)。这看起来很简单。

我创建了树结构及其包含的节点的深层副本。很酷。

但是,我不知道如何使用对这个新树中这些新节点的引用来重新填充一个新数组。看起来很简单,但我不知道该怎么做。

我试图足够具体,以提供足够的信息而不会太混乱,希望你能理解。

谢谢。

【问题讨论】:

  • 抱歉,我不明白你的问题是什么。
  • 如果你实现了克隆,你将调用object.Clone(),这将返回一个新实例;如果您的对象有列表,请查看此帖子stackoverflow.com/questions/715650/…

标签: java arrays tree clone


【解决方案1】:

如果您能够更改节点数据结构,您可以为节点的数组索引添加一个字段。这样,一旦你重建了你的树,你就可以遍历它并使用索引字段来重新填充数组。不是超级优雅,但它可以完成工作......

或者,为了避免向节点类添加字段,我想您可以使用将节点映射到数组索引的临时哈希表。遍历源数组以填充哈希表,然后在克隆树后,遍历树,在哈希表中查找新节点(假设您已正确实现 equalshashCode,这将正常工作) 并从中填充数组。

【讨论】:

  • 这个解决方案实际上非常实用和简单,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 2019-12-09
  • 2012-09-23
  • 2013-01-27
  • 2017-01-09
相关资源
最近更新 更多