设计模式----迭代器模式(Iterator)

IProject.java代码如下:

package com.designPattern.iterator;

public interface IProject {

public void add(String name,int num,int cost);

public String getProjectInfo();

public IProjectIterator iterator();
}




Project.java代码如下:



package com.designPattern.iterator;

import java.util.ArrayList;

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(){

}

public Project(String name,int num,int cost){
this.name = name;
this.num = num;
this.cost = cost;

}

@Override
public void add(String name, int num, int cost) {
this.projectList.add(new Project(name,num,cost));

}

@Override
public String getProjectInfo() {
String info = "项目名称是:"+this.name+"\t项目人数为:"+this.num+"\t项目费用为:"+this.cost;
return info;
}

@Override
public IProjectIterator iterator() {

return new ProjectIterator(this.projectList);
}

}



IProjectIterator.java代码如下:

package com.designPattern.iterator;

import java.util.Iterator;

public interface IProjectIterator extends Iterator<IProject>{

}



ProjectIterator.java代码如下:

package com.designPattern.iterator;

import java.util.ArrayList;

public class ProjectIterator implements IProjectIterator{

private ArrayList<IProject> projectList = new ArrayList<IProject>();

private int currentItem = 0;

public ProjectIterator(ArrayList<IProject> projectList){
this.projectList = projectList;
}

@Override
public boolean hasNext() {
boolean bool = true;
if(this.currentItem>=projectList.size()||this.projectList.get(this.currentItem)==null){
bool = false ;
}
return bool;
}

@Override
public IProject next() {
return (IProject)this.projectList.get(this.currentItem++);
}

@Override
public void remove() {

}

}



Boss.java代码如下:

package com.designPattern.iterator;

/**
* JDK1.2之后出现的Iterator
* @author yangjianzhou
*
*/
public class Boss {

public static void main(String[] args) {

IProject project = new Project();
project.add("星球大战", 10, 100000);
project.add("CS", 10, 100000);
project.add("WOW", 10, 100000);
project.add("地下城勇士", 10, 100000);

for(int i=4;i<100;i++){
project.add("第个"+i+"项目", 20, 100000);
}

IProjectIterator projectIterator = project.iterator();
while(projectIterator.hasNext()){
IProject p = projectIterator.next();
System.out.println(p.getProjectInfo());
}

}

}



运行结果如下:

项目名称是:星球大战 项目人数为:10 项目费用为:100000
项目名称是:CS 项目人数为:10 项目费用为:100000
项目名称是:WOW 项目人数为:10 项目费用为:100000
项目名称是:地下城勇士 项目人数为:10 项目费用为:100000
项目名称是:第个4项目 项目人数为:20 项目费用为:100000
项目名称是:第个5项目 项目人数为:20 项目费用为:100000
项目名称是:第个6项目 项目人数为:20 项目费用为:100000
项目名称是:第个7项目 项目人数为:20 项目费用为:100000
项目名称是:第个8项目 项目人数为:20 项目费用为:100000
项目名称是:第个9项目 项目人数为:20 项目费用为:100000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值