设计模式.迭代模式 Iterator

速记

Arraylist Iterator遍历方法

定义

迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。

场景

(1)访问一个聚合对象的内容而无需暴露它的内部表示

(2)支持对聚合对象的多种遍历

(3)为遍历不同的聚合结构提供一个统一的接口

类图

实现

(com.haiwei.behavior.iterator)

	迭代器接口
public interface HaiweiIterator {
    boolean hasNext();
    String next();
}
	List的接口
public interface HaiweiList {
    HaiweiIterator iterator();
    void add(String val);
}
	具体List类
public class MyList implements HaiweiList {
    //记录修改的次数
    private int modeCount = 0;
    //记录List的最大长度
    private int capcity = 10;
    //当前列表的大小
    private int size = 0;
    //记录数据
    private String [] list = new String[capcity];

    public HaiweiIterator iterator() {
        return new MyIterator();
    }
    public void add(String val) {
        list[size++] = val;
        modeCount ++;
    }
    
    /**
     * 迭代器应该是MyList的内容类
     * 除了MyList其他都没法创建
     */
    private class MyIterator implements HaiweiIterator {
        //当前元素位置指针
        private int currentpoit = -1;
        //修改次数
        private int tempModeCount = -1;
        
        public MyIterator(){
            currentpoit = 0;
            //在创建迭代器的时候记录当前列表修改的次数
            tempModeCount = modeCount;
        }
        public boolean hasNext() {
            return currentpoit < size;
        }
        public String next() {
            //如果遍历的过程中修改了列表就报错
            if(modeCount != tempModeCount){
                throw new RuntimeException("列表已经修改");
            }
            return list[currentpoit++];
        }
    }
}
	调用类
public class Test1 {
    public static void main(String[] args) {
        MyList list = new MyList();
        
        list.add("111");
        list.add("222");
        list.add("333");
        
        HaiweiIterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值