博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Iterable和iterator, enumerations
阅读量:6431 次
发布时间:2019-06-23

本文共 1999 字,大约阅读时间需要 6 分钟。

hot3.png

Iterable和iterator

Iterable定义了一个接口,表示该对象是可以用来遍历的,而实现该接口的类要返回一个iterator,来具体的实现遍历.

实现了Iterable接口的类可以和foreach配合使用.如果没有应用泛型的話,iterator返回的是object,需要类型转化.

应用

1.为我们自己的class创建多个iterator

public class GameCollection  { private Vector
games; private Vector
consoles; private class Games implements Iterable
{ @Override public Iterator
iterator() { return games.iterator(); } } private class Consoles implements Iterable
{ @Override public Iterator
iterator() { return consoles.iterator(); } } public GameCollection() { games = new Vector
(); consoles = new Vector
(); } public void add(Game game) { games.add(game); } public void add(GameConsole console) { consoles.add(console); } public Games games() { return new Games(); } public Consoles consoles() { return new Consoles(); }}
GameCollection gc = new GameCollection();//Add games and consoles with gc.add()for (Game g : gc.games()) { System.out.println(g.getName());}for (GameConsole g : gc.consoles()) { System.out.println(g.getName());}

2.创建自己的iterator

public class CircularGamesIterator implements Iterator
{ private Vector
list; private int currentPosition; public CircularGamesIterator(Vector
games) { list = games; currentPosition = 0; } @Override public boolean hasNext() { return currentPosition < list.size(); } @Override public Game next() { Game el = list.elementAt(currentPosition); currentPosition = (currentPosition + 1) % list.size(); return el; } @Override public void remove() { }}
public class GameCollection implements Iterable
{ private Vector
games; public GameCollection() { games = new Vector
(); } public void add(Game game) { games.add(game); } @Override public Iterator
iterator() { return new CircularGamesIterator(games); }}

转载于:https://my.oschina.net/u/138995/blog/293193

你可能感兴趣的文章
ISA Server搭建站点对站点×××
查看>>
我的友情链接
查看>>
超大规模数据中心:给我一个用整机柜的理由先
查看>>
执行命令取出linux中eth0的IP地址
查看>>
CRUD全栈式编程架构之控制器的设计
查看>>
python常用内建模块(五)
查看>>
你为什么有那么多时间写博客?
查看>>
Excel 中使用VBA
查看>>
$.ajax同步请求会阻塞js进程
查看>>
[原创] 消消乐游戏
查看>>
Postman 网络调试工具
查看>>
Python教程6
查看>>
zabbix实现自动发现功能添加磁盘监控
查看>>
一个完整的WSDL文档及各标签详解
查看>>
mysql8.0.14 安装
查看>>
C++基础算法学习——猜假币
查看>>
1039. 到底买不买(20)
查看>>
K - Kia's Calculation (贪心)
查看>>
android笔试题一
查看>>
【JavaEE企业应用实战学习记录】getConnListener
查看>>