永发信息网

Java中如果集合迭代器已经迭代完了,如果还想迭代,只能在调用一遍iterator返回一个新的吗?

答案:2  悬赏:40  手机版
解决时间 2021-02-12 05:04
Java中如果集合迭代器已经迭代完了,如果还想迭代,只能在调用一遍iterator返回一个新的吗?
最佳答案
  • 答:     是的,需要重新调用.iterator()方法,放回1个新的迭代器. 
  • 原因: 1:  因为迭代器使用完了,里面也就没有元素了,
    2: 并且java语言没有提供重置的方法. 
    代码如下
    import java.util.ArrayList;
    import java.util.Iterator;

    public class ListDemo {
    public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add(5);
    list.add(3);
    list.add(2);
    Iterator it = list.iterator();
    while (it.hasNext()) {
    System.out.println(it.next());
    }
    System.out.println(it.hasNext());// false 表示没有元素了
    //System.out.println(it.next());//会抛出异常 NoSuchElementException

    it = list.iterator(); //从集合里重新获得迭代器
    }
    }拓展思考:
    对于此类问题,往往是对java类不太熟悉, 可以经常使用java api文档, 查看文档,你会快速了解到某个类的方法有哪些, 继承了哪些接口等情况,
    比如Iterator类的方法说明如下


    方法摘要

    boolean    hasNext()
    如果仍有元素可以迭代,则返回 true。    
    E    next()
    返回迭代的下一个元素。    
    void    remove()
    从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
  • 全部回答
    for循环是语言中循环控制结构。 而iterator则是用来遍历集合中的元素。本身是不能够循环遍历需要借助循环控制语句进行迭代元素。 个人认为iterator封装了循环体遍历元素的细节,使得编程人员无需关心集合结构,以及访问元素的操作。 例如: for(int i=0;i
    我要举报
    如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    推荐资讯