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());
}
}
这道题的输出是什么?为什么,我判断错了。
------解决方案--------------------
+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));