遍历时的奇怪行为可能出现在使用迭代器或循环遍历集合或数组时。以下是几种可能的解决方法:
List list = new ArrayList<>();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (item.equals("foo")) {
iterator.remove(); // 正确的方式删除元素
}
}
List list = new ArrayList<>();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
String item = iterator.next();
if (item.equals("foo")) {
iterator.remove(); // 安全的方式删除元素
}
}
List list = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String item = list.get(i);
if (item.equals("foo")) {
list.remove(i);
i--; // 由于删除了元素,需要将索引减1
}
}
List list = new ArrayList<>();
List copyList = new ArrayList<>(list);
for (String item : copyList) {
if (item.equals("foo")) {
list.remove(item);
}
}
需要根据具体的情况选择适合的解决方法,以确保在遍历集合或数组时避免出现奇怪的行为。