Quando eu estava aprendendo hoje, quando encontrei um iterador para percorrer a coleção, não havia saída de elemento. Depois de pensar nisso por um longo tempo, percebi que "o mesmo iterador só pode ser percorrido uma vez. Se duas travessias forem escritas, a segunda travessia não pode produzir "
O motivo do meu problema é "Quero excluir um elemento da coleção e, em seguida, percorrer a saída, mas o resultado da saída ainda não foi excluído antes"
public void test5(){
/*
迭代器当中的 remove方法
*/
Collection collection=new ArrayList();
collection.add(1234);
collection.add(new String("123"));
collection.add(new Person(18,"Jerry"));
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object next = iterator.next();//next() 方法返回的是下一个对象
if (next.equals("123")){
iterator.remove();
}
System.out.println(next+"***");
}
while (iterator.hasNext()){
System.out.println(iterator.next()+"$$$$");
}
}
运行结果 :这就说明下一个迭代器根本没执行
1234***
123***
Person{age=18, name='Jerry'}***
Depois de ler as informações, descobri que o mesmo iterador só pode ser percorrido uma vez, então criei outro iterador para resolver o problema
public void test5(){
/*
迭代器当中的 remove方法
*/
Collection collection=new ArrayList();
collection.add(1234);
collection.add(new String("123"));
collection.add(new Person(18,"Jerry"));
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object next = iterator.next();//next() 方法返回的是下一个对象
if (next.equals("123")){
iterator.remove();
}
System.out.println(next+"***");
}
Iterator iterator1 = collection.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next()+"$$$$");
}
}
修改后的运行结果:正常遍历输出了
1234***
123***
Person{age=18, name='Jerry'}***
1234$$$$
Person{age=18, name='Jerry'}$$$$
Resumo: O processo de resolução de problemas é doloroso, mas soluções bem-sucedidas deixam as pessoas realmente felizes! ! !