如何从列表中删除整数? [复制]

Posted

技术标签:

【中文标题】如何从列表中删除整数? [复制]【英文标题】:How to remove integer from list? [duplicate] 【发布时间】:2013-06-06 22:01:21 【问题描述】:

我需要从整数数组列表中删除整数。我对字符串和其他对象没有问题。但是当我删除时,整数被视为索引而不是对象。

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(300);
list.remove(300);

当我尝试删除 300 时,我得到: 06-11 06:05:48.576: E/androidRuntime(856): java.lang.IndexOutOfBoundsException: Invalid index 300, size is 3

【问题讨论】:

你检查过ArrayList的文档吗? list.remove(300); 这里 300 被视为原始 int,传递 Integer 对象。 【参考方案1】:

这很正常,列表有两个版本的.remove() 方法:一个将整数作为参数并删除该索引处的条目,另一个将泛型类型作为参数(在运行时,是 Object) 并将其从列表中删除。

并且方法的查找机制总是首先选择更具体的方法...

你需要:

list.remove(Integer.valueOf(300));

为了调用正确版本的.remove()

【讨论】:

【参考方案2】:

使用 indexof 查找项目的索引。

list.remove(list.indexOf(300));

【讨论】:

虽然这确实有效,但执行起来要比使用Integer.valueOf 简单地获取一个对象要昂贵得多。 绝对会的 ;) 当它显然不是正确的做法时,为什么会得到支持? 对你来说就是这样。好像还不够错。【参考方案3】:

尝试(传递Integer,对象,而不是int,原语)-

list.remove(Integer.valueOf(300));

调用正确的方法 - List.remove(Object o)

【讨论】:

【参考方案4】:

请尝试以下代码从列表中删除整数,

public static void main(String[] args) 
        List<Integer> lIntegers = new ArrayList<Integer>();
        lIntegers.add(1);
        lIntegers.add(2);
        lIntegers.add(300);
        lIntegers.remove(new Integer(300));
        System.out.println("TestClass.main()"+lIntegers);

如果您通过传递原语来删除项目,那么它将把它作为索引而不是值/对象

【讨论】:

【参考方案5】:
Use list.remove((Integer)300);

【讨论】:

我确实测试过它。并且工作正常,没有错误。请解释为什么这是错误的 抱歉,我猜这行不通,但显然自动装箱比我想象的要过分热心。你是对的;没有问题。 @ValekHalfHeart 谢谢。我认为我的回答在否决投票时可能不是一个好习惯。 +1 转换为整数等价于 Integer.valueOf。

以上是关于如何从列表中删除整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表中的字符串末尾删除 '\n'? [复制]

如何在使用 range() 函数从列表中删除项目时迭代列表? [复制]

如何从 Python 列表中删除重复项并保持顺序? [复制]

如何按特定顺序从列表中删除字符串而不输入其值? [复制]

如何从整数arraylist.ANDROID中删除值[重复]

如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]