public class Puzzel1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (byte i = 0; i < 10; i++) {
list.add(i);
list.remove(new Integer(i));
}
System.out.println("*");
System.out.println(list.size());
}
}
这个输出10来为什么?
答案 0 :(得分:3)
插入自动装箱后,代码变为:
public class Puzzel1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (byte i = 0; i < 10; i++) {
list.add(Byte.valueOf(i));
list.remove(new Integer(i));
}
System.out.println("*");
System.out.println(list.size());
}
}
删除依赖于元素的equals
方法。
并且由于Byte.valueOf(i).equals(new Integer(i))
始终为false,因此永远不会删除元素
答案 1 :(得分:2)
它的becoz我们将字节数据添加到列表中并尝试删除整数,因此它不会从列表中删除任何值,因此当我们打印它时显示大小为10。
答案 2 :(得分:1)
list.add(i); // Here you are adding byte type
list.remove(new Integer(i)); // Here you are removing integer type