行为型软件设计模式——迭代器模式

迭代器模式就是为复杂的聚合型数据结构提供一个遍历方法的设计模式。
举个例子:随机生成一个整数矩阵,增加一个迭代器,按照斜对角线迭代遍历矩阵。矩阵可以看成是聚合类型的数据。
斜对角线迭代器代码如下DiagonalIterator.java:

点击查看代码
import java.util.*;
public class DiagonalIterator implements NumberIterator{
	   private ArrayList<Integer> numList = new ArrayList<Integer>();
	    int[][] mat;
	    private int numOfElements = 0;
	    int nextNum;
	    int counter = 0;
	    int nextIndex = -1;
	public DiagonalIterator(Matrix mx){
		mat = mx.getMatrixData();	
        findDiagonalNumber();
	}	
	 private void findDiagonalNumber() {
	        int i;
	        int j;
	        int len=mat.length;
	        for (int k=0; k<=len-1; k++){
	            for (i=0 ,j=k; i<=k && j>=0; i++,j--){
	                numList.add(mat[i][j]);
	            }
	        }
	        for (int k=1; k<=len-1;k++){
	            for (i=k,j =len-1; i <=len-1 && j>=k; i++,j--){
	                numList.add(mat[i][j]);
	            }
	        }
	    }
	@Override
	public boolean hasNext() {
		 if (counter < numList.size()) {
	            numOfElements++;
	            nextIndex++;
	            nextNum = numList.get(nextIndex);
	            counter++;
	            return true;
	        } else {
	            return false;
	        }
	}
	@Override
	public int next() {
		// TODO Auto-generated method stub
		return numList.get(nextIndex);
	}
	@Override
	public void remove() {
		// TODO Auto-generated method stub
		numList.remove(nextNum);
	}
	@Override
	public int getNumOfItems() {
		// TODO Auto-generated method stub
		return numOfElements;
	}
}
posted @ 2021-10-08 17:13  Beca  阅读(145)  评论(0)    收藏  举报