HeartBeat_zzt的博客

菜鸟晋级之路。。。

双向迭代器实现对该商品名称数组的双向(向前和向后)遍历。

要求:

某商品管理系统的商品名称存储在一个字符串数组中,现在需要自定义一个双向迭代器(DIterator)实现对该商品名称数组的双向(向前和向后)遍历。

代码:

public interface Iterator {
	public boolean hasNext();
	public Object Next();
}
public interface Product {
	public Iterator getIterator();
}
public class ProductList implements Product{
	public String names[]={"Apple","Banana","Pear","Melons","Peach"};
	
	public Iterator getIterator(){
		return new NameIterator();
	}
	
	public Iterator getIterator0(){
		return new NameIterator0();
	}
	public class NameIterator implements Iterator{
		int index;
		
		public boolean hasNext(){
			if(index<names.length){
				return true;
			}
			return false;
		}
		
		public Object Next(){
			if(this.hasNext()){
				return names[index++];
			}
			return null;
		}	
		
	}
	public class NameIterator0 implements Iterator{
		int flag=names.length-1;
		public boolean hasNext(){
			if(flag>-1){
				return true;
			}
			return false;
		}
		public Object Next(){
			if(this.hasNext()){
				return names[flag--];
			}
			return null;
		}
	}
	
	
}
public class IteratorPatternDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ProductList productlist = new ProductList();
		System.out.println("向后遍历:");
		for(Iterator ite = productlist.getIterator();ite.hasNext();){
			String name = (String)ite.Next();
			System.out.println("Name :"+name);
		}
		System.out.println("向前遍历:");
		for(Iterator ite = productlist.getIterator0();ite.hasNext();){
			String name = (String)ite.Next();
			System.out.println("Name :"+name);
		}
		
	}

}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HeartBeat_zzt/article/details/51556372
个人分类: 设计模式
上一篇windows环境下安装git、创建版本库
下一篇工厂模式设计实现读取文本文件和图像的三基色信息
想对作者说点什么? 我来说一句

迭代器模式

2012年08月10日 240KB 下载

没有更多推荐了,返回首页

关闭
关闭