Set<Short> s = new HashSet<Short>();
    for (Short i = 0; i < 100; i++) {
      s.add(i);
      s.remove(i - 1);
    }
    System.out.println(s.size());最后打印是100有remove方法,每次循环都执行,为啥结果是100呢

解决方案 »

  1.   

    remove () 方法只是把集合中的某一项的值清空. 但是位置还在.
      

  2.   

    2楼误导.
    remove方法是真正的从容器中把某项移除了.
    至于楼主所说结果还是100,是因为set集合的remove方法是移除某个在集合中已经存在的对象.
    目前容器中的元素全部是Short类型.但是经过i-1的运算已经转换成原生数据类型int.
    就算自动打包也是Integer.当然从集合中一个都删不了了.
    改成s.remove((short)(i - 1));
    这就对了