在Java中使用Hashmap进行联合查找。

问题描述 投票:0回答:1

我正在研究一个联合查找算法,用的是下面的 。

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);

它不工作,因为它实际上并没有进行 "正确 "的复制。我试过克隆父版,但也不行。

谢谢大家,圣诞快乐!

java reference hashmap pass-by-reference union-find
1个回答
0
投票

也许是这样?

公共E find(E src)

{
    E mysrc= src;
    while (parent.get(mysrc) != null)
        mysrc= parent.get(mysrc);
    parent.put(mysrc,src);
    return mysrc;
}
© www.soinside.com 2019 - 2024. All rights reserved.