迭代器模式

该博客为转载内容,转载自https://www.cnblogs.com/yangxiaohui227/p/10935871.html ,涉及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());
        }


    }
}

 

转载于:https://www.cnblogs.com/yangxiaohui227/p/10935871.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值