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={5,19,0,2,4,0,13,85,-8,0,23};
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))
}