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

标签 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个为什么?

最佳答案

插入自动装箱后,代码变为:

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()); 
    }
}

Remove 依赖于元素的 equals 方法。

并且由于 Byte.valueOf(i).equals(new Integer(i)) 始终为 false,因此元素永远不会被删除

关于java - 输出不是我所期望的。有人能让我明白为什么会这样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199173/

相关文章:

java - Firefox 身份验证弹出窗口出现错误 : User prompt of type promptUserAndPass is not supported

java - ANTLR 错误 134

java - Object[] 到底是什么?

java - OS X 上的 Intellij IDEA 设置

java - 无法识别的选项 : -vmargs

java - 构建solr字典索引

java - 等待一组异步Java调用的轻量级方式

java - 在字符串中移动字符

java - 从 VBA 代码启动 jar 文件

java - 更改父类中的变量类型