Ann*_*era 4 java iteration iterator loops list
无法弄清楚为什么这是无限循环.
public void DLCCheck(IconSet iconSet) {
Log.d(TAG, "Got dlc check. Looking to see if we need to remove any notes from the current list.");
int foundCount = 0;
for(Iterator<Item> i = mItemList.iterator(); i.hasNext(); ) {
if(i instanceof NoteItem && ((NoteItem) i).getIconSet() == iconSet) {
i.remove();
foundCount++;
}
}
Log.d(TAG, "Finished searching. Found " + foundCount + "notes in the current list to delete.");
//notifyDataSetChanged();
//EventBus.getDefault().post(new MoveNoteListOut());
}
Run Code Online (Sandbox Code Playgroud)
当hasNext返回false时,这不应该停止迭代吗?此列表中只有6个项目,但它永远循环.
Lui*_*oza 11
你永远不会打电话i.next()
.另外,i
是instanceof Iterator
,所以i instanceof NoteItem
永远不会true
.您应该阅读数据i.next()
并根据您的条件评估此类元素.
这是代码应该如何:
for(Iterator<Item> i = mItemList.iterator(); i.hasNext(); ) {
Item item = i.next();
if(item instanceof NoteItem && ((NoteItem) item).getIconSet() == iconSet) {
//here ---------------------------^^
//not sure what type returns getIconSet
//but if it's not a primitive then you should use equals
i.remove();
foundCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4265 次 |
最近记录: |