• Iterator接口。集合输出


    在集合中支持以下几种方式。

    iterator

    ListIterator

    foreach输出

    emumeration输出。

    集合输出的标准操作

    集合输出的时候必须形成以下的思路:只要碰到了集合输出的操作,就一定使用iterator接口,这是最重要的标准

    iterator接口的操作原理

    iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容,则把内容输出。

    对于iterator而言,其本身是一个借口,所以要想实例化,需要必须依靠collection接口完成

    在collection接口中可以看到这么一个方法:

    可见,可以通过collection接口里面的方法iterator()调用iterator接口。

    因此,所有继承于collection的类都有iterator()方法。

    实例化iterator接口的标准方法

    List<E> all=  new List子类<E>() ;
    Iterator<E> iter = all.iterator() ;    // 为Iterator接口实例化

    iterator的自带方法:

    实例:

    package 类集;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all=  new ArrayList<String>() ;    // 
            all.add("hello") ;
            all.add("_") ;
            all.add("world") ;
            Iterator<String> iter = all.iterator() ;    // 为Iterator接口实例化
            while(iter.hasNext()){    // 判断是否有内容
                System.out.println(iter.next()) ;    // 输出内容
            }
        }
    };

    输出结果:

    hello
    _
    world

    以上是iterator接口的标准做法。

    在iterator接口中提供了remove方法,功能是删除当前对象。

    package 类集;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all=  new ArrayList<String>() ;    // 
            all.add("hello") ;
            all.add("_") ;
            all.add("world") ;
            Iterator<String> iter = all.iterator() ;    // 为Iterator接口实例化
            while(iter.hasNext()){    // 判断是否有内容
                String str = iter.next() ;
                if("_".equals(str)){
                    iter.remove() ;    // 删除元素        
                }else{
                    System.out.println(str) ;    // 输出内容
                }
            }
            System.out.println("删除之后的集合:" + all) ;
        }
    };

    输出结果:

    hello
    world
    删除之后的集合:[hello, world]

    实际操作中很少利用这个remove()方法。

    LIst本身存在remove()方法。

    如果在使用迭代输出的过程中使用了List中的remove()执行删除操作,则代码将出现问题。

    package 类集;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all=  new ArrayList<String>() ;    // 
            all.add("hello") ;
            all.add("_") ;
            all.add("world") ;
            Iterator<String> iter = all.iterator() ;    // 为Iterator接口实例化
            while(iter.hasNext()){    // 判断是否有内容
                String str = iter.next() ;
                if("_".equals(str)){
                    all.remove(str) ;    // 删除元素        
                }else{
                    System.out.println(str) ;    // 输出内容
                }
            }
            System.out.println("删除之后的集合:" + all) ;
        }
    };

    输出结果:

    hello
    删除之后的集合:[hello, world]

    这里会发现,一旦List的对象执行删除后就会停止执行循环。

    在使用iteratror的时候,不要使用集合类中的remove()方法,只能使用iterator接口中方法。

    而且iterator是从前往后输出,属于单向输出,

    功能就是完成迭代输出操作。

  • 相关阅读:
    OpenGL入门1.3:着色器 GLSL
    OpenGL入门1.2:渲染管线简介,画三角形
    C++回调,函数指针
    JavaScript 比较和逻辑运算符
    JS 运算符
    JS 函数
    JS 对象
    JS 数据类型
    JS 变量
    JS 注释
  • 原文地址:https://www.cnblogs.com/alsf/p/6224212.html
Copyright © 2020-2023  润新知