我有一个整数数组列表,希望从其中删除一个整数值。为了澄清:假设我有一个函数,它接受整数的ArrayList,并指定整数值。我需要返回(value+1)从其中删除的列表。
boolean deleteFromList(ArrayList<Integer> list, Integer value)
现在,如果我这么做
return list.remove(value+1)编译器会抱怨,因为它将尝试调用接受int参数的delete方法,并从指定的位置删除对象,而不是实际的对象。那么,有什么正确的方法来处理这个问题呢?更好的做法是:
list.remove((Integer)(value+1))或
int v = value.intValue();
v++;
list.remove(new Integer(v)); ?在第二种情况下,我是否可以确保删除正确的值?
发布于 2013-11-10 11:47:06
list.remove(value+1)将在给定索引处删除。
您可以使用list.remove(Integer.valueOf(value+1))删除Integer。
Integer.valueOf(v)被重新命令,而不是new Integer(v),因为它允许为特殊值重用Integer实例(参见javadoc)。
编辑:在装箱/取消装箱方面,可以使用像trove4j这样的库来完全消除这个问题,它定义了一个动态的整数数组来存储原语值,而不是数字类(参见TIntArrayList)。没有装箱,没有取消装箱,更低的GC使用和更好的性能。
https://stackoverflow.com/questions/19889212
复制相似问题