zoukankan      html  css  js  c++  java
  • [译]Java 设计模式之迭代器

    (文章翻译自java-design-pattern-iterator)

    迭代器模式用于迭代遍历一个集合对象。它是一个经常被用到的模式,你可能以前使用过它。不管在任何时候你看见一些方法像hasNext()和Next(),这个很有可能就是一个迭代器模式。例如,你可以迭代去遍历一个数据库查询记录的列表。

    迭代器模式类图

    iterator-design-pattern

    迭代器模式Java代码

    interface IIterator{
    	public boolean hasNext();
    	public Object next();
    }
     
    interface IContainer{
    	public IIterator createIterator();
    }
     
    class RecordCollection implements IContainer{
    	private String recordArray[] = {"first","second","third","fourth","fifth"};
     
    	public IIterator createIterator(){
    		RecordIterator iterator = new RecordIterator();
    		return iterator;
    	}
     
    	private class RecordIterator implements IIterator{
    		private int index;
     
    		public boolean hasNext(){
    			if (index < recordArray.length)
    				return true;
    			else
    				return false;
    		}
     
    		public Object next(){
    			if (this.hasNext())
    				return recordArray[index++];
    			else
    				return null;
    		}
    	}
    }
     
    public class TestIterator {
    	public static void main(String[] args) {
    		RecordCollection recordCollection = new RecordCollection();
    		IIterator iter = recordCollection.createIterator();
     
    		while(iter.hasNext()){
    			System.out.println(iter.next());
    		}	
    	}
    }
    

    在JDK中是用迭代器模式

    在java.util包中,迭代器接口像下面这样被定义:

    public interface Iterator<E> {
        boolean hasNext();
        E next();
        void remove();
    }
    

    还有其他的类可以创建一个迭代器,例如 TreeSet#iterator(), HashSet#iterator(), 等等。

  • 相关阅读:
    关于C++类中的静态数据成员
    关于C++中char,sizeof,strlen,string
    C++学习笔记(7)
    C++学习笔记(6)
    C++学习笔记(指针)
    C++学习笔记(4)
    UVA 10780
    UVA 531
    HDU, 3579 Hello Kiki
    UVA, 10413 Crazy Savages
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4214368.html
Copyright © 2011-2022 走看看