迭代器模式

本文介绍迭代器模式的基本概念,通过示例代码展示了如何利用迭代器模式遍历集合对象,同时保持对象内部结构的隐藏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迭代器模式的定义:提供一种顺序访问一个聚合对象中各个元素的方法,但是又不会暴露该对象的内部表示。这个内部表示我的理解就是指向集合的指针,因为一般来讲遍历一个集合必须要像游标遍历结果集一样,迭代器模式就是让外界调用集合的createIterator方法来创建一个接口,这个接口暴露的方法和具体集合无关,然后通过这个接口的实现类和具体聚合对象之间的引用,把这个迭代器和具体聚合对象联系起来。

package com.jerry.design.iterator; import java.util.ArrayList; import java.util.List; // 测试类 public class Test { public static void main(String[] args) { String[] s = {"测试一","测试二","测试三","测试四"}; Aggregate a = new ConcreteAggregate(s); Iterator it = a.createIterator(); it.first(); while(it.hasNext()){ System.out.println(it.current()); it.next(); } } } interface Iterator{ public void first(); public void next(); public boolean hasNext(); public Object current(); } class ConcreteIterator implements Iterator{ private int index = -1; private ConcreteAggregate aggregate; public ConcreteIterator(ConcreteAggregate aggregate) { super(); this.aggregate = aggregate; } @Override public void first() { index = 0; } @Override public void next() { if(index<aggregate.size()){ index++; } } @Override public boolean hasNext() { int temp = index; if(temp<aggregate.size()){ return true; } return false; } @Override public Object current() { return aggregate.get(index); } } interface Aggregate{ public abstract Iterator createIterator(); } class ConcreteAggregate implements Aggregate{ private String[] s = null; public ConcreteAggregate(String[] s) { super(); this.s = s; } @Override public Iterator createIterator() { return new ConcreteIterator(this); } public Object get(int index){ if(index<s.length){ return s[index]; }else{ return null; } } public int size(){ return s.length; } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值