输出不是我的预期。有人能让我明白为什么会这样吗?

时间:2014-03-05 13:18:49

标签: java

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来为什么?

3 个答案:

答案 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