我正在研究一个联合查找算法,用的是下面的 。
HashMap<E,E> parent = new HashMap<E,E>();
我写了这个方法来寻找一个家庭的最后一个成员。
public E find(E src)
{
while (parent.get(src) != null)
src = parent.get(src);
return src;
}
它可以工作,但问题是我要在这个大集的hashmap上工作;所以我想修改find方法,使它将find(src)设置为src的 "父"。但我不能像现在这样做,而且我有一个直观的原因:如果我试着在方法的开头做一个复制的话
E copy = src;
然后在该方法的最后
parent.put(copy,src);
它不工作,因为它实际上并没有进行 "正确 "的复制。我试过克隆父版,但也不行。
谢谢大家,圣诞快乐!
也许是这样?
公共E find(E src)
{
E mysrc= src;
while (parent.get(mysrc) != null)
mysrc= parent.get(mysrc);
parent.put(mysrc,src);
return mysrc;
}