zoukankan      html  css  js  c++  java
  • 1.14(设计模式)迭代器模式

    迭代器模式用于顺序访问集合对象的元素,而无需知道集合的底层表示,屏蔽了细节用一种更便携的方式访问集合对象。

    定义一个获取迭代对象的接口

    public interface Container {
        public Iterator getIterator();
    }

    定义迭代对象方法

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

    创建一个集合类时,需要在该集合类中添加一个内部类实现Iterator接口,用于判断是否有元素及获取元素。

    集合类需要实现Container接口,提供一个获取实现了Iterator的内部类对象的方法,用于后续遍历。

    //模拟集合类
    public class NameRepository implements Container{
        
        private String[] names = {"hcf","zrx","gcmh"};
        
        
        //获取实现了Iterator接口的内部类
        @Override
        public Iterator getIterator() {
            // TODO Auto-generated method stub
            return new NameRepositoryIterator();
        }
        
        //集合内部实现Iterator接口的内部类。
        private class NameRepositoryIterator implements Iterator{
            
            private int index = (names != null && names.length > 0) ? 0 : -1;
            
            @Override
            public boolean hasNext() {
                // TODO Auto-generated method stub
                if(index < names.length) {
                    return true;
                }else {
                    return false;
                }
            }
    
            @Override
            public Object next() {
                // TODO Auto-generated method stub
                return names[index++];
            }
            
        }
    }

    Main

    public class Main {
        public static void main(String[] args) {
            NameRepository nameRepository = new NameRepository();
            Iterator ite = nameRepository.getIterator();
            while(ite.hasNext()) {
                System.out.println(ite.next());
            }
        }
    }
    运行结果:
    hcf
    zrx
    gcmh

    参考资料:

    https://www.runoob.com/design-pattern/iterator-pattern.html

  • 相关阅读:
    Hbase 统计行数的四种方式
    Solr、MongoDB和Hadoop比较
    三种方法更改MAC OS X下的HOSTS文件
    史上最全前端面试题(含答案)
    图文-水平垂直居中兼容ie6+
    CSS3动画
    jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com)
    web app变革之rem
    MAC中通过gem命令安装compass
    mac下升级ruby环境版本
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/10997637.html
Copyright © 2011-2022 走看看