我有以下整数列表
whatToRemove = {2, 3, 8};
和另一个清单
lst = {4, 6, 8}
我想从中删除所有whatToRemove
元素lst
。
我正在尝试使用lst.remove(whatToRemove.get(i))
,但它正在尝试删除索引,而不是值。
我怎样才能做到这一点?
我有以下整数列表
whatToRemove = {2, 3, 8};
和另一个清单
lst = {4, 6, 8}
我想从中删除所有whatToRemove
元素lst
。
我正在尝试使用lst.remove(whatToRemove.get(i))
,但它正在尝试删除索引,而不是值。
我怎样才能做到这一点?
List<Integer> whatToRemove = Arrays.asList(2, 3, 8);
List<Integer> lst = new ArrayList<Integer>(Arrays.asList(4, 6, 8));
lst.removeAll(whatToRemove);
使用列表元素,您将要删除列表中对象的索引。对于您的示例,它显然是整数。为此,您可以使用 for 循环或以手动方式将每个索引对象拉出。
for 循环 - 示例:
for(int i = 0; i < whatToRemove.size(); i++){
whatToRemove.remove(i);
}
手册 - 示例:
whatToRemove.remove(0);
whatToRemove.remove(1);
whatToRemove.remove(2);
这是我从您的问题中了解到的,您想从列表中删除所有元素,称为“whatToRemove”。
这是一个链接,可以提供对列表参数的一些了解链接 - Java Object 'List'
使用迭代器:
for (Iterator it=lst.iterator(); it.hasNext();) {
if (whatToRemove.contains(it.next())
it.remove();
}
如果您使用 Java 集合来执行此操作,您可以简单地调用removeAll(Collection<T> o)
您的第一个列表来删除所有出现。
它看起来像lst.removeAll(whatToRemove);
或者,您可以轻松地遍历所有元素
for(int num : whatToRemove)
{
lst.remove(num);
}
两者都是可行的,如果您使用数组,您仍然可以使用增强的 for 进行迭代。但删除是一个不同的问题。
链接到 Javadoc:列表
这是因为 List 具有按索引删除元素的删除和按对象删除的删除,请参阅:
http://docs.oracle.com/javase/6/docs/api/java/util/List.html#remove(int)
看看有 2 个删除:-(?
不幸的是,由于您的列表包含整数 Java 认为您的意思是 remove(item at) 而不是 remove(object)
利用
Collection lst = [whatever]
lst.remove(whatToRemove.get(i))
...然后删除应该正常工作,因为 Collection 只有一种删除功能(您要使用的那个)
http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html
您可以使用removeAll()
,它接受一个实现 的对象Collection interface
作为参数,如下所示:
list.removeAll(collection);
或者,您需要进行某种迭代以遍历要删除的所有值,因为remove()
不将另一个列表作为参数,仅将索引或对象作为参数:
for(int i=0;i<whatToRemove.size();i++){
lst.remove(whatToRemove.get(i));
}
在 List 上使用 removeAll 方法
您可以使用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);
有关收集和 removeAll 方法的更多详细信息,您可以参考以下 URL
http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html