Java /从列表中删除整数值

时间:2013-05-18 15:42:17

标签: java collections

我有以下Integer列表

whatToRemove = {2, 3, 8};

和另一个清单

lst = {4, 6, 8}

我想从whatToRemove中移除所有lst个元素。

我正在尝试使用lst.remove(whatToRemove.get(i)),但它正在尝试删除索引,而不是值。

我该怎么做?

8 个答案:

答案 0 :(得分:1)

    List<Integer> whatToRemove = Arrays.asList(2, 3, 8);
    List<Integer> lst = new ArrayList<Integer>(Arrays.asList(4, 6, 8));
    lst.removeAll(whatToRemove);

答案 1 :(得分:0)

您可以使用removeAll(),它将实现Collection interface的对象作为参数,如下所示:

list.removeAll(collection);

或者您需要进行某种迭代才能浏览所有要删除的值,因为remove()不会将另一个列表作为参数,只需要索引或对象:

for(int i=0;i<whatToRemove.size();i++){
lst.remove(whatToRemove.get(i));
}

答案 2 :(得分:0)

使用迭代器:

for (Iterator it=lst.iterator(); it.hasNext();) {
   if (whatToRemove.contains(it.next())
      it.remove();
}

答案 3 :(得分:0)

如果您使用Java集合执行此操作,则只需在第一个列表中调用removeAll(Collection<T> o)即可删除所有出现的内容。

它看起来像lst.removeAll(whatToRemove);

或者,您可以轻松地遍历所有元素

for(int num : whatToRemove)
{
     lst.remove(num);
}

两者都是可行的,如果您使用数组,您仍然可以使用增强的for来进行迭代。但删除是一个不同的问题。

链接到Javadoc:List

答案 4 :(得分:0)

这是因为List有一个删除按索引删除元素的删除和按对象删除的删除请参阅:

http://docs.oracle.com/javase/6/docs/api/java/util/List.html#remove(int)

看看有2个删除: - (?

不幸的是,因为你的列表包含整数,Java认为你的意思是删除(item at)而不是删除(object)

使用

Collection lst = [whatever]
lst.remove(whatToRemove.get(i))

...然后删除应该正常工作,因为Collection只有一种删除功能(你想要使用的那个)

http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html

答案 5 :(得分:0)

使用List

上的removeAll方法

答案 6 :(得分:0)

使用list元素,您将要删除列表中对象的索引。对于你的例子,它显然是整数。要实现此目的,您可以使用for循环或以手动方式拉出每个索引对象。

for循环 - 示例:

for(int i = 0; i < whatToRemove.size(); i++){
     whatToRemove.remove(i);
 }

手册 - 示例:

whatToRemove.remove(0);
whatToRemove.remove(1);
whatToRemove.remove(2);

这是我从您的问题中理解的,您希望从列表调用“whatToRemove”中删除所有元素。

这是一个链接,可以提供对列表参数Link - Java Object 'List'

的一些了解

答案 7 :(得分:0)

您可以使用 removeAll(Collection c)方法,如下所示

lst.removeAll(whatToRemove);

请查看下面的示例

List<Integer> whatToRemove = new ArrayList<Integer>();
whatToRemove.add(new Integer(2));
whatToRemove.add(new Integer(3));
whatToRemove.add(new Integer(8));

List<Integer> lst = new ArrayList<Integer>();
lst.add(new Integer(4));
lst.add(new Integer(6));
lst.add(new Integer(8));

lst.removeAll(whatToRemove);

您可以参考以下网址,了解有关收集和删除所有方法的详细信息

http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html