java set1的元素全部复制给set2

今天做题 偶然发现一个错误,在我的理解中,我是创建了2个set,这应该算是2个对象,他们应该有不同的地址。搞不懂为什么第二次往set2中添加元素,set1中也会添加。
例如:
import java.util.*;
public class test{

public static void main(String[] args){

HashSet set1=new HashSet();
HashSet set2=new HashSet();
set1.add(1);
set2=set1;
set2.add(2);

    Iterator iterator1=set1.iterator();
    while(iterator1.hasNext()){
       System.out.println(iterator1.next());
   } 

    Iterator iterator2=set2.iterator();
    while(iterator2.hasNext()){
       System.out.println(iterator2.next());
   } 


}

}

输出结果为
1
2
1
2

···
set2=set1;
···
这只是把set1的引用赋值给set2,它们共享一个对象,所以对set2的改动也会影响到set1.

set2=set1;
->
for (Integer i : set1)
{
set2.add(i);
}

比如现在你的set1里存放的是引用(地址)为0x666;set2中存放的是0x888;
现在set2 = set1;就是set2 = 0x666了,而现在set1和set2的地址都是0x666。
所以对set1和set2的操作就相当于对0x666进行操作,所以两个引用迭代器输出的结果都是两个。