日期:2014-05-20  浏览次数:20725 次

集合的增加,删除
import java.util.HashSet;
import java.util.Set;

public class ShortSet {
public static void main(String[] args) {
// TODO Auto-generated method stub
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());
}
}

这道题的输出是什么?为什么,我判断错了。

------解决方案--------------------
引用:
你把s.remove(i-1);改成remove((short)(i-1))试一下。
+1,,因为Java中的所有关于Short类型的计算,都会被自动转化为Integer类型,所以你remove(i - 1)意思就是去掉一个Integer类型的数据,但是Set中都是Short类型的,所以不能remove掉。当然了,前面你add的i,其实在循环时,i++,所以也被转成了Integer类型,但是泛型为Short,所以插入的时候,会再被自动转化为Short,所以可以插进去。
------解决方案--------------------
试了一下,错误了。是remove(i-1)中的i-1时i变成int型的。可以加System.out.println(i.getClass()); 试一下。
------解决方案--------------------
被remove的对象要满足e要满足
(o==null ? e==null : o.equals(e))
equals比较两个对象你该懂的吧
      
  Short m=1;
        Integer t=1;
        System.out.println(m.equals(t));