package Iterator;
/**
* @author cbf4Life cbf4life@126.com
* 定义一个接口,所有的项目都是一个接口
*/
public interface IProject {
//从老板这里看到的就是项目信息
public String getProjectInfo();
}
package Iterator;
/**
* @author cbf4Life cbf4life@126.com
* 所有项目的信息类
*/
public class Project implements IProject {
//项目名称
private String name = "";
//项目成员数量
private int num = 0;
//项目费用
private int cost = 0;
//定义一个构造函数,把所有老板需要看到的信息存储起来
public Project(String name,int num,int cost){
//赋值到类的成员变量中
this.name = name;
this.num = num;
this.cost=cost;
}
//得到项目的信息
public String getProjectInfo() {
String info = "";
//获得项目的名称
info = info+ "项目名称是:" + this.name;
//获得项目人数
info = info + "\t项目人数: "+ this.num;
//项目费用
info = info+ "\t 项目费用:"+ this.cost;
return info;
}
}
package Iterator;
import java.util.ArrayList;
/**
* @author cbf4Life cbf4life@126.com
* 老板来看项目信息了
*/
public class Boss {
public static void main(String[] args) {
//定义一个List,存放所有的项目对象
ArrayList<IProject> projectList = new ArrayList<IProject>();
//增加星球大战项目
projectList.add(new Project("星球大战项目",10,10));
//增加扭转时空项目
projectList.add(new Project("扭转时空项目",100,1000));
//增加超人改造项目
projectList.add(new Project("超人改造项目",10000,100000));
//这边100个项目
for(int i=4;i<10;i++)
projectList.add(new Project("第"+i+"个项目",i*5,i*100));
//遍历一下ArrayList,把所有的数据都取出
for(IProject project:projectList)
System.out.println(project.getProjectInfo());
}
}public interface Iterable<T> {
Iterator<T> iterator();
}Iterable接口,任何能"具有迭代"功能的聚集都要实现这个接口,它也只有一个方法,返回聚集的迭代器。public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}Iterator接口,就是具体的迭代器。package iterator.v2;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author cbf4Life cbf4life@126.com
* 定义一个迭代器
*/
public class ProjectIterator implements Iterator<Object>{
//所有的项目都放在这里ArrayList中
private ArrayList<IProject> projectList = new ArrayList<IProject>();
private int currentItem = 0;
//构造函数出入projectList
public ProjectIterator(ArrayList<IProject> projectList){
this.projectList = projectList;
}
//判断是否还有元素,必须实现
public boolean hasNext() {
//定义一个返回值
boolean b = true;
if(this.currentItem>=projectList.size() || this.projectList.get(this.currentItem) == null){
b =false;
}
return b;
}
//取得下一个值
public IProject next() {
return (IProject)this.projectList.get(this.currentItem++);
}
//删除一个对象
public void remove() {
//暂时没有使用到
}
}
package iterator.v2;
import java.util.Iterator;
/**
* @author cbf4Life cbf4life@126.com
* 定义一个接口,所有的项目都是一个接口
*/
public interface IProject extends Iterable<Object>{
//增加项目
public void add(String name,int num,int cost);
//从老板这里看到的就是项目信息
public String getProjectInfo();
public Iterator<Object> iterator();
}
package iterator.v2;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author cbf4Life cbf4life@126.com
* 所有项目的信息类
*/
@SuppressWarnings("all")
public class Project implements IProject {
//定义一个项目列表,说有的项目都放在这里
private ArrayList<IProject> projectList = new ArrayList<IProject>();
//项目名称
private String name = "";
//项目成员数量
private int num = 0;
//项目费用
private int cost = 0;
public Project(){
}
//定义一个构造函数,把所有老板需要看到的信息存储起来
private Project(String name,int num,int cost){
...
}
//增加项目
public void add(String name,int num,int cost){
this.projectList.add(new Project(name,num,cost));
}
//得到项目的信息
public String getProjectInfo() {
...
}
//产生一个遍历对象
public Iterator<Object> iterator(){
return new ProjectIterator(this.projectList);
}
}
package iterator.v2;
/**
* @author cbf4Life cbf4life@126.com
* 老板来看项目信息了
*/
public class Boss {
public static void main(String[] args) {
//定义一个List,存放所有的项目对象
IProject project = new Project();
//增加星球大战项目
project.add("星球大战项目ddddd",10,100);
//增加扭转时空项目
project.add("扭转时空项目",100,10000);
//增加超人改造项目
project.add("超人改造项目",10000,1000000);
//这边100个项目
for(int i=4;i<14;i++){
project.add("第"+i+"个项目",i*5,i*1000);
}
//遍历一下ArrayList,把所有的数据都取出
ProjectIterator projectIterator = (ProjectIterator) project.iterator();
while(projectIterator.hasNext()){
IProject p = (IProject)projectIterator.next();
System.out.println(p.getProjectInfo());
}
}
}uml图
public ListIterator<E> listIterator() {
return new ListItr(0);
}
public Iterator<E> iterator() {
return new Itr();
}import java.util.*;
public class IteratorDemo {
public static void process(Collection c) {
Iterator i = c.iterator(); //创建迭代器对象
//通过迭代器遍历聚合对象
while(i.hasNext()) {
System.out.println(i.next().toString());
}
}
public static void main(String args[]) {
Collection persons;
persons = new ArrayList(); //创建一个ArrayList类型的聚合对象
persons.add("张无忌");
persons.add("小龙女");
persons.add("令狐冲");
persons.add("韦小宝");
persons.add("袁紫衣");
persons.add("小龙女");
process(persons);
}
}原文:http://blog.csdn.net/dlf123321/article/details/40401425