@Override
public boolean hasNext() {
if(stack.empty()){
return false;
}else{
//获得栈顶的元素但不移除
Iterator iterator = (Iterator)stack.peek(); //从堆栈中取出一个元素
if(!iterator.hasNext()){ //判断取出的元素是否还有下一个元素
stack.pop();
return hasNext();
}else{
return true;
}
}
}
@Override
public Object next() {
if(hasNext()){
Iterator iterator = (Iterator)stack.peek();
MenuComponent component = (MenuComponent)iterator.next();
if(component instanceof Menu){
stack.push(component.createIterator());
}
return component;
}else{
return null;
}
}
迭代器模式的递归算法
最新推荐文章于 2023-07-11 15:46:45 发布