复习(数据结构:java):线性表(数组):迭代器

来源:互联网 发布:游族网络股票吧 编辑:程序博客网 时间:2024/04/29 06:42

10. 迭代器

ArrayIntListIterator()
* 迭代的基本方法
1. hasNext() :有更多可以访问的元素,返回true
2. next():返回下一个元素
3. remove(): 删除最近一次next()方法返回的元素


1. 设计用例和接口

//输入{5,19,0,2,4,0,13,85,-8,0,23};//输出非0元素的乘积public class client2{    public static void main(String[] args){        int[] data={51902401385,-8023};        ArrayIntList list = new ArrayIntList();        for(int n:data)            list.add(n);        ArrayIntListIterator i = list.iterator();        int producet = 1;        while(i.hasNext()){            int n=i.next();            if(n == 0)                i.remove();            else                producet *= n;        }        System.out.println("list+ "=list);        System.out.println("producet = "+producet);    }}

2.设计类

import  java.util.*;public class ArrayIntListIterator{    private ArrayIntListIterator list; //list to iterate over    private int position; //current list position    private boolean removeOK; //ok to move now?    //构造函数    public ArrayIntListIterator(ArrayIntList list){        this.list=list;        position=0;        removeOK=false;    }      public boolean hasNext(){        return position<list.size();    }    public int next(){        if(!hasNext())            throw new NoSuchElementException();        int  result =list.get(position);        position++;        removeOK=true;        return result;    }    public void remove(){        if(!removeOK)            throw new IllegalStateEXception();        list.remove(position-1);        position--;        removeOK = false;    }}

2. ArrayIntList中,添加iterator 构造器

  • 在类 ArrayIntList 中,添加构造器
public ArrayIntListIterator iterator(){    return new ArrayIntListIterator(this))}
0 0
原创粉丝点击