今天在学习的时候,碰到用迭代器去遍历集合的时候一直没有元素输出,琢磨了好久我才知道 “同一个迭代器只能遍历一次,如果写了两个遍历,则第二个遍历无法输出”
我的问题原因"我想删掉集合中的一个元素然后再遍历输出,结果输出结果还是没有删除之前的"
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'}***
经过我翻阅资料,才弄明白同一个迭代器只能遍历一次,于是再造一个迭代器,即可解决问题
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'}$$$$
总结:解决问题的过程是痛苦的,但是成功解决让人真的很开心!!!