如何在list中删除我指定的对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在list中删除我指定的对象相关的知识,希望对你有一定的参考价值。
参考技术A List list = new ArrayLis();list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.remove();是移除
括号里面可以是数字,例如list.remove(1),即移掉第2个,即移除元素b;
移除对象是,直接list.remove("b");本回答被提问者采纳 参考技术B var list = [1, 2, 3];
list.splice(0, 1);
console.log(list);
VM12520:3 [2, 3]
如何从列表中删除整数? [复制]
【中文标题】如何从列表中删除整数? [复制]【英文标题】: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。以上是关于如何在list中删除我指定的对象的主要内容,如果未能解决你的问题,请参考以下文章