• 迭代器模式


    /**
     * 迭代器模式:java集合中有通过迭代器来遍历的方式,通过迭代器遍历,隐藏了容器内部的组成,而普通的forEach遍历,是可以知道组成是啥的;此处模拟迭代器的实现;
     * 迭代器最重要的2个方法:hasNext(),next(),通过自定义一个集合,集合内部集成迭代器来遍历自定义集合
     *
     *
     */
    //迭代器接口
    public interface MyIterator {
        boolean hasNext();
        Object next();
    }
    //集合接口
    public interface MyList {
        MyIterator getIterator();
    }
    //结合实现类,内部类实现了迭代器
    public class ArrList implements MyList {
        private Integer defualtCapacity=10;
    
        private Object[] arr=null;
        private int size=0;
    
        public ArrList() {
            arr=new Object[defualtCapacity];
        }
    
        public ArrList(Integer capacity) {
            if(null!=capacity && capacity>0){
                defualtCapacity=capacity;
            }
            arr=new Object[defualtCapacity];
    
        }
        //集合新增内容
        public boolean add(Object obj){
           if(arr.length>size){
               arr[size]=obj;
               size++;
               return true;
           }else {
               //todo 扩容
           }
    
            return false;
        }
        //获取集合容量
        public int size(){
            return size;
        }
        @Override
        public MyIterator getIterator() {
    
            return new MyIteratorImpl();
        }
        //迭代器实现类
        private class MyIteratorImpl implements MyIterator{
            private int index=0;
            @Override
            public boolean hasNext() {
                if(index<size){
                    return true;
                }
                return false;
            }
    
            @Override
            public Object next() {
                Object o = arr[index];
                index++;
                return o;
            }
        }
    }
    public class Test {
        public static void main(String[] args) {
            //创建容量为20的集合
            ArrList arrList = new ArrList(20);
            arrList.add("haha");
            arrList.add("kk");
            arrList.add("a");
            arrList.add("b");
            arrList.add("c");
            arrList.add("d");
            System.out.println(arrList.size());//集合的长度
            //遍历集合
            MyIterator iterator = arrList.getIterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
    
    
        }
    }
  • 相关阅读:
    Windows Azure: Service Bus Queues 入门
    HTTP权威指南读书
    学习OpenWebkitSharp
    Intro to ASP.NET MVC 4 with Visual Studio [译五:添加一个模型]
    正则表达式
    运行page页面时的事件执行顺序
    C#cookie自动获取工具发布
    (译) Facebook工程师2012年小创意合集
    三层+临时表存储过程+巧用json+贱招图片加载+无刷新分页
    iOS开发那些事编写OCUnit测试方法应用测试方法
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10935871.html
Copyright © 2020-2023  润新知