gpt4 book ai didi

java - ArrayList迭代器消除崩溃

转载 作者:行者123 更新时间:2023-12-02 12:11:50 25 4
gpt4 key购买 nike

我在数组中有数组,我需要在第二个数组中找到一些项目并删除父数组,但是当我尝试删除数组时,我遇到了错误 java.lang.IllegalStateException

 productsList = new ArrayList<>(mSortModels);
for (ProductComponentsResponse component : filterData) {
String componentId = component.getId();
int componentState = component.getState();
Iterator<ProductResponse> iterator = productsList.iterator();
while (iterator.hasNext()) {
ProductResponse next = iterator.next();
for (ProductComponentsResponse productComponentsResponse: next.getProductComponents()) {
boolean containComponent = productComponentsResponse.getId().contains(componentId);
if (componentState == ProductComponentsResponse.FilterState.NONE) {
continue;
} else if (componentState == ProductComponentsResponse.FilterState.SELECTED) {
if (!containComponent) {
Log.d("component", String.valueOf(containComponent));
***iterator.remove();*** - this error line
}
} else if (componentState == ProductComponentsResponse.FilterState.UNSELECTED) {
if (containComponent) {
iterator.remove();

}
}
}
}
}
notifyDataSetChanged();

最佳答案

Iterator.remove() 删除了父级,但您继续循环子级。有时可能会再次对同一个父级调用 remove() 。这可能会导致你的崩溃。

要解决此问题:在两个 iterator.remove() 之后放置一个 break;,以便在删除其父级时跳出内部 for 循环。这样您就不会继续循环已删除父级的子级。

关于java - ArrayList迭代器消除崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46483631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com