繁体   English   中英

在为集合类创建自己的迭代器时遇到麻烦

[英]Having trouble making my own iterator for a collections class

我收到错误“迭代器无法解析为类型”。 我正在尝试采用存储类,并添加实现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;
            }
        };
    }
}

您需要import java.util.Iterator;

这段代码甚至没有错; 查看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()返回一个布尔值。

这是完全错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM