zoukankan      html  css  js  c++  java
  • 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处

  • 相关阅读:
    iOS之使用AFN进行序列化处理(5)
    iOS之AFN文件上传(4)
    iOS之AFN使用技巧(3)
    iOS之AFN框架基本使用(2)
    iOS之AFN简介(1)
    iOS之JSON解析和视频的简单播放
    iOS之带有边框的圆形图片裁剪
    SQL limit offset
    Ubuntu安装pycharm, No JDK found. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation
    scrapy项目运行报错: exceptions.ImportError: No module named win32api
  • 原文地址:https://www.cnblogs.com/xuwangqi/p/11220303.html
Copyright © 2011-2022 走看看