详解java迭代器模式
程序员文章站
2023-12-01 12:09:34
场景
提供一种可以遍历聚合对象的方式。又称为:游标cursor模式
聚合对象:存储数据
迭代器:遍历数据
jdk内置的迭代器(list/set)...
场景
- 提供一种可以遍历聚合对象的方式。又称为:游标cursor模式
- 聚合对象:存储数据
- 迭代器:遍历数据
jdk内置的迭代器(list/set)
package com.qianyu.gof.iterator; import java.util.arraylist; import java.util.iterator; /** * @author lijing * @date 2019-04-10-14:38 * @discroption jdk内置迭代器测试类 */ public class iteratortest { public static void main(string[] args) { arraylist<string> list = new arraylist<string>(); list.add("a"); list.add("b"); list.add("c"); iterator<string> iter = list.iterator(); //hasnext()判断是否有下一个元素 while (iter.hasnext()) { //next()函数返回当前元素,并将游标指向下一位 system.out.println(iter.next()); } } }
手动实现迭代器
package com.qianyu.gof.iterator; /** * @author lijing * @date 2019-04-10-14:37 * @discroption 迭代器接口 */ public interface myiterator { /** * 判断是否有下一个元素 * * @return */ boolean hasnext(); /** * 返回当前元素,并且将游标向下移动一位 * * @return */ object next(); }
package com.qianyu.gof.iterator; import java.util.arraylist; import java.util.list; /** * @author lijing * @date 2019-04-10-19:18 * @discroption 自定义聚合类 */ public class mylist { list<object> list = new arraylist<object>(); public boolean add(object obj) { return list.add(obj); } public boolean remove(object obj) { return list.remove(obj); } /** * 返回迭代器对象 * * @return */ public concreteiterator iterator() { return new concreteiterator(); } /** * 自定义内部类,可以直接使用外部类的属性 */ private class concreteiterator implements myiterator { //游标 private int cursor = 0; @override public boolean hasnext() { return this.cursor < list.size(); } @override public object next() { return list.get(cursor++); } } }
package com.qianyu.gof.iterator; /** * @author lijing * @date 2019-04-10-19:14 * @discroption 自定义迭代器测试类(迭代器模式) */ public class iteratortest2 { public static void main(string[] args) { mylist mylist = new mylist(); mylist.add("aa"); mylist.add("bb"); mylist.add("cc"); myiterator iter = mylist.iterator(); while (iter.hasnext()){ system.out.println(iter.next()); } } }
uml类图:
以上所述是小编给大家介绍的java迭代器模式详解整合,希望对大家有所帮助