zoukankan      html  css  js  c++  java
  • Java中迭代器初深

    今天学习了迭代器,老师对迭代器的两个方法hasNext()和Next(),做了深入的理解,并且举了一个简单的例子大致模拟了底层的实现,下面我来记录下实现的过程,首先建立了一个

    Collection.java 这是模拟的Collection接口 代码如下:

    package cn.itcast.studyIterator;

    public interface Collection {
        public Object get(int index);
        public int size();
        public Interator interator();
    }

    实现类的代码如下:

    public class CollectionImal implements Collection {

        private String[] str = {"java","php","csharp","admin"};
                
        public Object get(int index) {
            return str[index];
        }

        public int size() {
            // TODO Auto-generated method stub
            return str.length;
        }

        public Interator interator() {
            // TODO Auto-generated method stub
            return new InteratorImpl(this);
        }

    }

    模拟Iterator的接口代码如下,只是定义了两个简单的功能:

    package cn.itcast.studyIterator;

    public interface Interator {
        public boolean hasNext();
        public Object next();
        
    }

    实现代码如下:

    public class InteratorImpl implements Interator {
        private Collection collection;
        private int index = -1;
        public InteratorImpl(Collection collection){
            this.collection = collection;
        }
        public boolean hasNext() {
            if(index < collection.size() - 1){
                return true;
            }
            return false;
        }
        public Object next() {
            index++;
            return collection.get(index);
        }

    }

    最后就是调用代码了:

    public class Test {
        public static void main(String[] args) {
            CollectionImal collection = new CollectionImal();
            Interator it = collection.interator();
            while(it.hasNext()){
                System.out.println(it.next());
            }
            
        }
    }

    我感觉这个过程的关键就是两个类之间的数据传递,CollectionImal类的成员方法interator方法,将自己传递给了InteratorImpl的构造方法,从而实现了把一个对象传递到了另一个对象中的过程,也实现了在一个对象中操作另一个对象的功能,这一块还需要多思考,有了更深入了理解之后,再过来记载下来

  • 相关阅读:
    解决Django在mariadb创建的表插入中文乱码的问题
    运行在CentOS7.5上的Django项目时间不正确问题
    获取百度网盘真实下载连接
    Django2.x版本在生成数据库表初始化文件报错
    Pycharm中的Django项目连接mysql数据库
    Django2.x版本路由系统的正则写法以及视图函数的返回问题
    CentOS7.5安装坚果云
    CentOS7.5安装下载工具
    CentOS6.5修改/etc/pam.d/sshd后root无法ssh登陆
    oracle 时间
  • 原文地址:https://www.cnblogs.com/ciyan/p/4918674.html
Copyright © 2011-2022 走看看