无法为集合类创建自己的迭代器

时间:2010-12-09 01:50:47

标签: java class collections iterator

我收到错误“Iterator无法解析为某种类型”。我正在尝试使用存储类并添加实现java的Collections类所需的代码。 我不认为我被允许导入Iterator,我想我需要自己创建。

public class storage {
    private Object[] data = new Object[256];
    // Don't allow access to anything not yet stored
    private int nextEmptySlot = 0;
    private int i=0;
    public Object begin(){
        return data[0];
    }
    public Object end(){
        return data[nextEmptySlot];
    }

    //class Iterator() {
        // public Storage data;
    //}

    public Iterator iterator() {

        // returns a class that iterates over the data array
        return new Iterator() {
            public Object remove(){
                for(int j=i+1 ; j<=nextEmptySlot-1 ; j++) {
                    this.data[j-1] = this.data[j];
                }
                return (this.data.data[i]);
            }

            public int hasNext(){
                if(this.data.data[i+1] != null) return 1;
                else return 0;
            }

            public Object next(){
                i++;
                if (hasNext()==1){
                    return this.data.data[i];
                }
                else if (hasNext()==0){
                    throw UnsupportedOperationException();       
                }
                return this;
            }
        };
    }
}

2 个答案:

答案 0 :(得分:4)

您需要import java.util.Iterator;

答案 1 :(得分:1)

这段代码甚至没错;看看Iterator方法:

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html

您的Iterator没有实现java.util.Iterator接口;使用相同的名称不能使它成为一个。

看看你的方法:

public int hasNext()

java.util.Iterator hasNext()返回一个布尔值。

这是完全错误的。