zoukankan      html  css  js  c++  java
  • 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是从前往后输出,属于单向输出,

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

  • 相关阅读:
    photoSlider-原生js移动开发轮播图、相册滑动插件
    JavaScript库开发者们的规则
    如何提高手机APP的用户体验?
    html清除浮动的6种方法
    JS内存泄露常见原因
    web前端开发规范文档
    jQuery无缝循环开源多元素动画轮播jquery.slides插件
    9种CSS3炫酷图片展开预览展示动画特效
    纯css3 transforms 3D文字翻开翻转3D开放式效果
    html5+css3第一屏滚屏动画效果
  • 原文地址:https://www.cnblogs.com/alsf/p/6224212.html
Copyright © 2011-2022 走看看