集合迭代
任意可迭代集合数据类型:
1. 集合数据类型必须实现一个iterator()方法,并返回一个Iterator对象
2. Iterator类必须包含两个方法,hasNext()返回boolean值和next()返回集合中的一个泛型元素。
import java.util.Iterator;
/**
* Created By liuyao on 2017/10/30 15:49.
*/
//必须实现Iterable接口
public class MyStack<Item> implements Iterable<Item> {
//自定义一个节点
private class Node{
Item item;
Node next;
}
private Node first;
private int N;
//复写iterator方法,并返回一个迭代器Iterator<Item>
@Override
public Iterator<Item> iterator(){
return new MyStackIterator();
}
//自定义迭代器,并复写hasNext和next方法
private class MyStackIterator implements Iterator<Item>{
private int i=N;
private Node tempNode=first;
@Override
public boolean hasNext() {
return i>0;
}
@Override
public Item next() {
Item item=tempNode.item;
tempNode=tempNode.next;
return item;
}
}
public boolean isEmpty(){
return N==0;
}
public void push(Item item){
Node oldNode=first; //现将原来的节点保存起来
first=new Node(); //创建一个新的节点
first.item=item;
first.next=oldNode; //再将新的节点指向原来的节点
N++;
}
public Item pop(){
Item item=first.item;
first=first.next;
N--;
return item;
}
public int size(){
return N;
}
}