解决方案 »

  1.   

    你的写法等同于下面的        Set<Integer> set = new HashSet<Integer>();
    //        Integer i1 = 45;
    //        Integer i2 = 46;
            set.add(45);
            set.add(46);
            System.out.println(set.size());//
            set.remove(45);
            System.out.println(set.size());//
            for (Integer integer : set) {
                System.out.println("i2 = " + integer); //
            }
    //        i2 = 47;
            set.remove(47);
            for (Integer integer : set) {
                System.out.println("i2 = " + integer);
            }
            System.out.println(set.size());//
      

  2.   

    嗯,同上。
    主要问题在后面的i2= 47,Integer 是基本数据类型。是值传递,所以变量改变,值是不会变的。removed也是removed的值
      

  3.   

    你虽然给i2变量重新赋值47,但是你没有add到set集合中,set集合是面的值还是46,你remove(47),但set中没有这个值,所以两次for循环输出的都是46
      

  4.   

    你的i2 = 47;不会改变原先的值,而是new了一个新的Integer。LZ可以自定义一个数值类:
    class MyInteger{
      public int value;
    }然后再i2.value = 47;
    应该可以实现你的效果。
      

  5.   

    public static void main(String[] args) {
            Set<Integer> set = new HashSet<Integer>();
            Integer i1 = 45;
            Integer i2 = 46;
            set.add(i1);//加入45
            set.add(i2);//加入46
            System.out.println(set.size());//集合中有45,46  size = 2
            set.remove(i1);//移除46
            System.out.println(set.size());//集合中只有46了   size =1
            for (Integer integer : set) {//
                System.out.println("i2 = " + integer); //
            }
            i2 = 47;//变量赋值47
            set.remove(i2);//移除47 ,集合中不存在,
            for (Integer integer : set) {//由于新的i2变量值没有加入集合,所以集合还是 46
                System.out.println("i2 = " + integer);
            }
            System.out.println(set.size());//集合中还是46  size =1
        }
      

  6.   

    简而言之,基本类型和其对应的引用类型外加字符串String 这17种在Java中是值传递的而非引用传递
      

  7.   

    只是把值47传给了i2 并没有修改set中的值(引用)。
      

  8.   

    详细看这篇文章就可以了:http://blog.csdn.net/enson16855/article/details/8753639
      

  9.   

    你要明白HashSet的底层其实是HashTable实现的。。还有hashcode和equals方法,文章说的比较详细,看源码就知道了的~