sinat_25234961
2016-08-17 13:31
采纳率: 70.6%
浏览 2.8k
已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • kimixuchen 2016-08-17 14:04
    已采纳

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

    点赞 打赏 评论
  • blownewbee 2016-08-17 14:38

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

    点赞 打赏 评论
  • Mr_fsd 2016-08-17 17:04

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

    点赞 打赏 评论

相关推荐 更多相似问题