zoukankan      html  css  js  c++  java
  • 迭代器模式

    /**
     * 迭代器模式: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());
            }
    
    
        }
    }
  • 相关阅读:
    c++入门之初话结构体
    c++学习之字符串拼接
    数组赋值问题
    c++之sizeof的用法
    MySQL 创建一个简单的成绩管理系统
    KMP算法详解
    [Leetcode] Implement strstr
    [Leetcode] Multiply strings 字符串对应数字相乘
    [Leetcode] count and say 计数和说
    [Leetcode] Roman to integer 罗马数字转成整数
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10935871.html
Copyright © 2011-2022 走看看