Java 数组列表 : Adding primitive type or its wrapper-class: What's the difference?

标签 java arraylist primitive

想象一下 Java 中的以下 ArrayList:

ArrayList<Integer> u = new ArrayList<Integer>();

我想知道添加新值作为原始类型或包装类时是否有区别:

u.add(new Integer(12));
u.add(12);

提前致谢!

最佳答案

由于自动装箱/拆箱,add 没有任何区别。实际上不要执行 new Integer(12) 而是执行 Integer.valueOf(12) 因为它使用 flighweight 模式并重用已知对象(在 -128, 127 范围内) 。所以不会创建新的对象。

例如,remove 就存在差异。
因为如果您打算调用 remove(Object) ,调用 remove(5) 将调用 remove(int index) 而这可能不是您想要的想要。
如果要删除数字 5,则应执行 remove((Integer)5);如果要删除数字,则应执行 remove(5)第五个元素。

关于Java 数组列表 : Adding primitive type or its wrapper-class: What's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914781/

相关文章:

ArrayList 实例中的 Java 类型规范

java - 具有 Map<K,V> 值的 ArrayList

java - Java中的原始数据类型是线程安全的吗

Android - 更原始的数组仅按一个数组排序

java - 从 Android 设备获取 .mp3 格式的文件

java - java 和 jsp 中的搜索查询不起作用

java - JFace : Clear contents of a ListViewer prior to setting input.(不使用Selection监听器清除所有内容)

java - 如何在 Gradle 中设置 NDK 库路径?

java - 在 Java 中的 ArrayList 之间进行转换

java - Java 中使用运算符 == 比较对象和基元如何工作?