我在這裏有一個對象的通用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