美文网首页
Java中迭代器的实现

Java中迭代器的实现

作者: 某李 | 来源:发表于2016-05-04 14:47 被阅读578次

    //首先,你的自定义类要实现Iterable接口(java.long.Iterable)①

    public class Stack implements Iterable{
    
    //类体
    
    }
    
    

    //Iterable接口(java.long.Iterable),它的内部只有一个iterator方法,这个方法的功能是返回一个Iterator(迭代器)对象,所以你的自定义类里要有这个方法。

    public interface Iterable{
    
    Iterator iterator();
    
    }
    

    //迭代器是一个实现了Iterator接口的类的对象②

    //该接口为

    public interface Iterator{
    
    boollean hasNext();
    
    Itemnext();
    
    void remove();
    
    }
    

    ③这个接口的实现类(迭代器)是你所自定义的引用类型的一个内部类

    举个栗子,这是一个实现了迭代的、基于链表的栈:

    import java.util.Iterator;
    
    
    
    ①//实现了Iterable接口
    
    public class Stack implements Iterable{
    
    private Nodefirst;
    
    private int N;
    
    private class Node{
    
    Item item;
    
    Node next;
    
    }
    
    public boolean isEmpty(){
    
    return first==null;
    
    }
    
    public void push(Itemitem){
    
    Node oldfirst=first;
    
    first=new Node();
    
    first.item=item;
    
    first.next=oldfirst;
    
    N++;
    
    }
    
    public Item pop(){
    
    Itemitem=first.item;
    
    first=first.next;
    
    N--;
    
    return item;
    
    }
    
    
    
    ②//Iterable接口内的iterator方法
    
    public Iterator iterator(){
    
    return new ListIterator();//返回了一个迭代器
    
    }
    
    //这个迭代器没有实现remove方法
    
    //迭代器要实现Iterator接口
    
    ③private class ListIterator implements Iterator{
    
    private Node current=first;
    
    public boolean hasNext(){
    
    return current==null;
    
    }
    
    public Item next(){
    
    Item item=current.item;
    
    current=current.next;
    
    return item;
    
    }
    
    }
    
    }
    

    相关文章

      网友评论

          本文标题:Java中迭代器的实现

          本文链接:https://www.haomeiwen.com/subject/rrirrttx.html