12迭代器

作用:遍历我们集合的元素

遍历Vector的迭代器

通过调用Vector特有的方法elements方法返回古老的迭代器

Enumeration

有两个方法:

boolean hasMoreElements()
测试此枚举是否包含更多元素。
E nextElement()
返回此枚举的下一个元素,如果此枚举对象至少有一个元素可以提供。 
    public static void main(String[] args) {
        //创建集合对象
        Vector<String> v=new Vector<String>();
        //添加元素
        v.add("1");
        v.add("2");
        v.add("3");
        v.add("4");
        //调用方法返回古老的迭代器
        Enumeration<String> e=v.elements();
        //迭代遍历
        while(e.hasMoreElements())//判断是否还有元素
        {
            //获取元素
            String s=e.nextElement();
            System.out.println(s);
        }
    
    }

}

遍历其他集合的迭代器iterator

底层通过挪动指针来遍历我们集合元素,遍历过程中,不能直接增删我们的原集合元素,但是可以通过调用Iterator的remove()通过改变底层比较的状态值来删除集合元素

 boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true

Object next():返回集合里下一个元素

void remove():删除集合里上一个next方法返回的元素

    public static void main(String[] args) {
        // TODO Auto-generated method stub
 //创建集合对象
        ArrayList<String>list=new ArrayList<String>();
        //添加元素
        list.add("1");
        list.add("3");
        list.add("2");
        //获取新的迭代器
    Iterator <String> t=list.iterator();
        //迭代遍历
        while(t.hasNext()) { //判断后面是否还有元素
            String s=t.next();
            System.out.println(s);
            t.remove();//是改变底层比较的状态值---由true变成false
        }

 

调用iterator()方法返回Iterator接口(迭代器),这个iterator方法是由Iterable接口提供的,collection接口继承Iterable接口,但是collection接口还是顶级接口,Iterable只是拓展功能

对象对应的类可以实现Iterabke,那么这个对象就可以进行迭代遍历,增强for循环底层是由迭代器实现的--------jdk1.5新特性。

 

上面代码使用foreach循环来迭代访问Collection集合元素,与使用Iterator迭代访问集合元素类似

foreach 循环中的迭代变量也不是集合元素本身,系统知识依次把集合元素的值赋给迭代变量,因此在foreach循环中修改迭代变量的值ue没有任何的实际意义,同样当使用foreach循环访问集合元素的时候,该集合也不能被改变,否则将引发ConcurrentModificationException异常,如上图1处

原文地址:https://www.cnblogs.com/xuwangqi/p/11220303.html