迭代器模式
来源:互联网 发布:用python做科学计算pdf 编辑:程序博客网 时间:2024/06/03 03:23
迭代器模式
定义:
迭代器模式是一种行为型模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
主要解决:不同的方式来遍历整个整合对象
优点:
它支持以不同的方式遍历一个聚合对象。
迭代器简化了聚合类。
在同一个聚合上可以有多个遍历。
在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
缺点:
由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。
实例代码
定义一个List的迭代器和一个数组迭代器,分别添加元素,遍历打印结果。
- Iterator接口
public interface Iterator<T> { boolean hasNext(); T next();}
- ArrayIterator类
public class ArrayIterator<T> implements Iterator<T> { private T[] array; private int currentIndex = -1; public ArrayIterator(T[] array) { this.array = array; } @Override public boolean hasNext() { if (array == null) { return false; } if (array.length - currentIndex - 1 > 0) { return true; } return false; } @Override public T next() { currentIndex++; return array[currentIndex]; }}
- ListIterator类
public class ListIterator<T> implements Iterator<T> { private List<T> list; private int currentIndex = -1; public ListIterator(List<T> list) { this.list = list; } @Override public boolean hasNext() { if (list == null) { return false; } if (list.size() - currentIndex - 1 > 0) { return true; } return false; } @Override public T next() { currentIndex++; return list.get(currentIndex); }}
main入口使用
public static void main(String[] args) { String[] array = new String[]{"cat", "dog", "tiger"}; Iterator<String> iterator = new ArrayIterator<>(array); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("------------------------------"); List<String> list = new ArrayList<>(); list.add("zhangsan"); list.add("lisi"); list.add("laowang"); iterator = new ListIterator<>(list); while (iterator.hasNext()){ System.out.println(iterator.next()); } }
打印结果:
catdogtiger------------------------------zhangsanlisilaowang
这种模式在Java中有比较多的实现,这里仅仅是学习用。
0 0
- 行为模式-迭代器模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 行为模式-迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- 【设计模式】迭代器模式
- 设计模式 迭代器模式
- 算法提高 简单计算器
- ubuntu交叉编译试用于openwrt的i2c-tools
- CSS继承性的研究
- Java实现SHA-256签名加密
- matplotlib 命令行执行报错
- 迭代器模式
- 给linux杀杀毒吧
- 无人车带给程序员哪些机会
- Android 之 Fragment
- 初识Linux命令
- 安卓收发短信 uAndroidSmsManager 2017-01-10
- Android 系列 6.26在TabView中导航不同的活动
- 【CSS黑魔法】父元素无高度情况下的子元素高度自适应方法
- 测试这个东西好不啦