我在这里有一个对象的通用arraylist我想删除某些元素,问题是当我用循环迭代列表,我不能做一个简单的因为元素在每次移除后发生移位,所以它们的顺序为remove()
。如何从Android的通用ArrayList中删除项目(Java)
感谢
我在这里有一个对象的通用arraylist我想删除某些元素,问题是当我用循环迭代列表,我不能做一个简单的因为元素在每次移除后发生移位,所以它们的顺序为remove()
。如何从Android的通用ArrayList中删除项目(Java)
感谢
使用Iterator删除元素
像
Iterator itr = list.iterator();
String strElement = "";
while (itr.hasNext()) {
strElement = (String) itr.next();
if (strElement.equals("2")) {
itr.remove();
}
}
创建索引的数据的单独的ArrayList从删除原始ArrayList,然后通过for循环遍历它来移除这些元素。
ArrayList<Myobj> arr = new ArrayList<Myobj>();
for (Myobj o : arr){
arr.remove(arr.indexOf(o));
}
你可以重复向后,当你经过ArrayList中删除。这具有随后的元件不需要移位并且比向前移动更容易编程的优点。
List<String> arr = new ArrayList<String>();
ListIterator<String> li = arr.listIterator(arr.size());
// Iterate in reverse.
while(li.hasPrevious()) {
String str=li.previous();
if(str.equals("A"))
{
li.remove();
}
}
可以遍历列表这样...
public void clean(List<Kopek> kopeks) {
for(Kopek kopek : kopeks) {
if (kopek.isDirty())
kopeks.remove(kopek);
}
}
这是当量为...
public void clean1(List<Kopek> kopeks) {
Iterator<Kopek> kopekIter = kopeks.iterator();
while (kopekIter.hasNext()) {
Kopek kopek = kopekIter.next();
if (kopek.isDirty())
kopeks.remove(kopek);
}
}
别这样......(由于原因你已经观察到。)
public void clean(List<Kopek> kopeks) {
for(int i=0; i<kopeks.size(); i++) {
Kopek kopek = kopeks.get(i);
if (kopek.isDirty())
kopeks.remove(i);
}
}
不过,我相信按索引而不是按对象清除效率更高。按对象移除效率不高,因为列表在大多数情况下不是散列列表。
kopeks.remove(kopek);
VS
kopeks.remove(ⅰ);
为了实现位置捞出,通过适当地处理一个移动的目标...
public void clean(List<Kopek> kopeks) {
int i=0;
while(i<kopeks.size()) {
Kopek kopek = kopeks.get(i);
if (kopek.isDirty()) // no need to increment.
kopeks.remove(i);
else
i++;
}
}
感谢您的努力..但解决方案list.remove(object);即使dosent帮助它创建相同的异常..它更好地使用迭代器或检查解决方案,而不使用下面的迭代器 – Rakshi 2012-07-11 09:45:04
不使用迭代器也解决了问题..我想要做的就是获取要删除的索引,并按降序排序,然后将其从列表中删除。 检查下面的代码
Arraylist<obj> addlist = getlist();
List<Integer> indices = new ArrayList<Integer>();
for(int i=0; i<addlist.size() ;i++){
if(addlist.get(i).getDelete()){
indices.add(i);
}
}
Collections.sort(indices, Collections.reverseOrder());
for (int i : indices)
addlist.remove(i);
您是否有要删除的特定值可用? – 2012-07-11 09:02:49
是在对象中我有一个布尔值,我必须检查并删除该项目 – Rakshi 2012-07-11 09:09:23