Iterator迭代器的使用
Iterator是用来遍历集合元素的,本身不是个数组。
常用next()和hasNext()方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
//Iterator遍历数组元素
public class TestIterator {
public static void main(String[] args){
Collection c = new ArrayList();
c.add(123);//此时123是包装类的123
c.add(new String("tom"));
c.add(false);
Iterator iterator = c.iterator();
/*法1不推荐
System.out.println(iterator.next());//123
System.out.println(iterator.next());//tom
*/
/*法2不推荐
for(int i=0;i<c.size();i++){
System.out.println(iterator.next());
}*/
//法3推荐
while(iterator.hasNext()){//相当于判断iterator中还有没有元素
System.out.println(iterator.next());
}
/*常见错误方法1会报NoSuchElementException异常
还有输出是跳着输出的我们先拿到123然后打印语句又next就拿到了tom
while(iterator.next()!=null){
System.out.println(iterator.next());
}
错误方法2会进入死循环因为我们每while一次就会产生一个新的迭代器
while(c.iterator.hasNext()){
System.out.println(c.iterator.next());
}
*/
//测试iterator中的remove方法在遍历中删除元素
iterator= c.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
if("tom".equals(obj)){
iterator.remove();
}
}
iterator = c.iterator();//我们上一个while执行完指针在这个集合的最后了再直接while打印就不行了所以需要重新生成一个迭代器
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}