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

在Java中使用Hashmap进行联合查找,java,reference,hashmap,pass-by-reference,union-find,Java,Reference,Hashmap,Pass By Reference,Union Find,我正在使用以下方法研究联合查找算法: HashMap<E,E> parent = new HashMap<E,E>(); 这是可行的,但问题是我要用大集合来处理这个hashmap;所以我想修改find方法,使其将find(src)设置为src的“父”。但我不能这样做,我有直觉的原因:如果我尝试在方法的开头复制一个副本 E copy = src; parent.put(copy,src); 然后在方法的末尾 E copy = src; parent.put(copy

我正在使用以下方法研究联合查找算法:

HashMap<E,E> parent = new HashMap<E,E>();
这是可行的,但问题是我要用大集合来处理这个hashmap;所以我想修改find方法,使其将find(src)设置为src的“父”。但我不能这样做,我有直觉的原因:如果我尝试在方法的开头复制一个副本

E copy = src;
parent.put(copy,src);
然后在方法的末尾

E copy = src;
parent.put(copy,src);
它不起作用,因为它实际上没有“正确”的复制。我尝试过克隆父母,但也不起作用

谢谢大家,圣诞快乐

也许是这个

公共E-find(E-src)


这…乍一看,它应该可以工作,但它不应该做任何复制。那它怎么办?我不想复制任何东西。IMO.E copy=src只是再次引用了src。现在src指向该对象,并将点复制到同一对象。。。您必须覆盖克隆方法以包含所有要克隆的成员…DaveEtherave:是的,这是一个引用,而不是一个克隆,不知道如何绕过它,将尝试下面的答案并返回给您,谢谢!将
parent.put(mysrc,src)
替换为
parent.put(src,mysrc)
,否则类代表每次都会更改,这并不是我们想要的。无论如何,它不起作用,我认为这没有解决引用问题