java迭代器模式注意事项_详解java迭代器模式

场景

提供一种可以遍历聚合对象的方式。又称为:游标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 list = new arraylist();

list.add("a");

list.add("b");

list.add("c");

iterator 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 list = new arraylist();

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类图:

08ec15e8a50fb6503f788ec72b22d804.png

以上所述是小编给大家介绍的java迭代器模式详解整合,希望对大家有所帮助

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值