【发布时间】:2015-12-25 20:38:34
【问题描述】:
我正在研究一种联合查找算法,使用以下方法:
HashMap<E,E> parent = new HashMap<E,E>();
我已经写了这个方法来找到一个家庭的最后一个成员
public E find(E src)
{
while (parent.get(src) != null)
src = parent.get(src);
return src;
}
它有效,但问题是我将使用大集合处理这个哈希图;所以我想修改 find 方法,使其将 find(src) 设置为 src 的“父亲”。但我不能按原样那样做,我有直觉的原因:如果我尝试在方法的开头进行复制
E copy = src;
然后在方法结束时
parent.put(copy,src);
它不起作用,因为它实际上并没有进行“正确”的复制。我试过克隆父母,但它也不起作用。
谢谢大家,圣诞快乐!
【问题讨论】:
-
那...乍一看,它应该可以工作,但它不应该进行任何复制。不行怎么办?
-
我不想复制任何东西。国际海事组织。 E copy = src 只是再次引用了 src。现在 src 指向对象并复制指向同一个对象...您必须重写 clone 方法以包含您要克隆的所有成员...
-
DaveTheRave :是的,就是这样,它是一个引用而不是克隆,不知道如何解决它,将在下面尝试您的答案并回复您,谢谢!
标签: java reference hashmap pass-by-reference union-find