java中enumeration_12.1.7 Java中的应用-Enumeration适配器(对象的适配器模式)

12.1.7  Java中的应用-Enumeration适配器(对象的适配器模式)

有时你可能需要将Vector转换成Iterator对象,这就需要使用包装器模式来将Enumeration对象转换成Iterator对象了。

此时我们可以选择第二种适配器-对象的适配器。如图12-7所示,包装器Enumerator负责将对象Enumeration改造成Iterator的形式。

a321e605e036a65f0127b0313da9e916.png

Enumeration对象拥有如下两个函数:

hasMoreElements()判断是否有下一个对象。

nextElement()取得下一个对象。

为了将Enumeration转换为Iterator,此时可以调用上面的两个函数来分别实现Iterator的如下两个函数:

hasNext()判断是否有下一个对象。

next()取得下一个对象。

此外,Iterator接口还有一个删除函数remove,由于Enumeration没有提供相应的删除函数,这里我们可以不提供remove功能。

其完整的代码如程序12-14所示。

程序12-14  Enumeration被包装为Iterator类型Enumerator.javapackagestructure.adapter;

importjava.util.Enumeration;

importjava.util.Iterator;

publicclassEnumeratorimplementsIterator {

Enumeration em;

publicEnumerator(Enumeration em) {

super();

this.em = em;

}

publicbooleanhasNext() {

returnem.hasMoreElements();

}

publicObject next() {

returnem.nextElement();

}

publicvoidremove() {

}

}

下面来编写测试代码。首先创建一个Vector对象并初始化数据,进而得到Enumeration对象,然后根据该对象构造Enumerator的对象即可,***即可按照Iterator的接口进行迭代。其源代码如程序12-15所示。

程序12-15  测试类EnumeratorTest.javapackagestructure.adapter;

importjava.util.Enumeration;

importjava.util.Iterator;

importjava.util.Vector;

publicclassEnumeratorTest {

publicstaticvoidmain(String[] args) {

// 创建Enumeration对象

Vector vect =newVector();

vect.add("aaa");

vect.add("bbb");

vect.add("ccc");

Enumeration em = vect.elements();

// 取得Iterator对象

Iterator it =newEnumerator(em);

while(it.hasNext()) {

System.out.println(it.next());

}

}

}

运行该程序的结果如下:aaa

bbb

ccc

【责任编辑:董书 TEL:(010)68476606】

点赞 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值