使用iterat移除list需要注意的問題

2021-10-24 17:05:02 字數 735 閱讀 3166

迭代用完後在使用之前需要重新生成,指標變了 iteratorchannelcompositionsiterator = compositions.iterator();

兩次remove同一次的遍歷報錯

iterator是物件引用迭代器中的效果會反應到引用物件

iteratorchannelcompositionschoiceiterator = compositions.iterator();

while (channelcompositionschoiceiterator.hasnext())

}} else

//同時排除商品組中子項為其的商品--**,商品編碼相同就型別相同? todo 判斷flag????

iteratorfinalchannelgroupproductiterator2 = groupproducts.iterator();

while (finalchannelgroupproductiterator2.hasnext())

//商品組子項為空--即沒有單品也沒有**,此按商品組去除

if (null == groupitemvos || groupitemvos.size() == 0)

}} else

}//有乙個匹配就結束

return flag;

}//繼續匹配

return false;

});if (flagmatch)

}

在list使用remove移除元素的問題

當我們在對集合中的元素進行操作時,通過foreach對集合進行遍歷並且使用remove 方法時,如以下 public class test for string a list 此時程式會報錯 這是因為迭代器內部維護了索引位置相關的資料,它要求在迭代過程中,容器不能發生結構性變化,所謂結構性變化就是 ...

正確移除List中物件

list是乙個arraylist的物件,哪個選項的 填到 todo delete處。能夠在iterator遍歷的過程中正確並安全的刪除乙個list中儲存的物件?iterator it list.iterator int index 0 while it.hasnext index a.it.remo...

C 移除List 指定List 資料項

最近在coding過程中,遇到了這樣了乙個問題,有乙個list型別資料集,根據業務需求需要在這個資料集中移除所有在另乙個同型別的資料集中存在過的資料,即 移除a集合中在b集合中存在過的資料,獲得a與b的差集。在msdn查詢資料的時候,發現c 提供了乙個 list.removeall predicat...