Java从ArrayList中删除整数的正确方法

标签 java collections autoboxing

我有一个整数数组列表,想从中删除一个整数值。澄清一下:假设我有一个函数,它接受 ArrayList整数和指定的整数值。我需要返回已删除 (value+1) 的列表。

boolean deleteFromList(ArrayList<Integer> list, Integer value)

现在,如果我这样做:

return list.remove(value+1)

编译器会提示,因为它会尝试调用需要 int 的删除方法。参数并从指定位置删除对象,而不是实际对象。 那么处理这个问题的正确方法是什么?这样做是否更好:

list.remove((Integer)(value+1))

int v = value.intValue();
v++;
list.remove(new Integer(v)); 

?在第二种情况下,我可以确定正确的值会被删除吗?

最佳答案

list.remove(value+1) 将在给定索引处删除。

您可以使用list.remove(Integer.valueOf(value+1))删除Integer

建议使用

Integer.valueOf(v) 而不是 new Integer(v),因为它允许重用特殊值的 Integer 实例(请参阅 javadoc)。

编辑: 在装箱/拆箱方面,可以使用像 trove4j 这样的库来完全消除问题,这些库定义了存储原始值而不是数字类的动态整数数组(请参阅 TIntArrayList )。无需装箱,无需拆箱,GC 使用率更低,性能更好。

关于Java从ArrayList中删除整数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19889212/

相关文章:

C++ 位列表作为数字

通过方法进行 Java 自动装箱

java - 实现数据访问层抽象

Java 8 将 Map<K, List<V>> 转换为 Map<V, List<K>>

java - iText 5.4.2 是开源的吗?

java - 集合 addAll 方法用于一组唯一值

scala - 专门集合中的 AnyVal 元素是否需要装箱?

java - 为什么 Java 中的自动装箱允许我有 3 个可能的 boolean 值?

java - 如何用 Java 编写这个用 C# 编写的逻辑? C#中的返回值类型有哪些?

java - 我的代码在我的代码中出现数组越界异常,但在前 2 个输入后它将运行并崩溃,出了什么问题