簡體   English   中英

在Object []數組上實現Java Iterator和Iterable接口

[英]Implementing the Java Iterator and Iterable Interface over an Object[] array

這是我實現Iterator的內部類:

public class myIterator implements Iterator<Object> {
    private int pos = 0;

    public boolean hasNext(){
        return pos < arrayPal.length;

    }
    public Object next(){
        return arrayPal[pos++];

    }
}

在這個內部類所在的類中,DynArray(這是一個對象,它有一個名為arrayPal的內部數組,任何類型的對象,以及一個布爾值,表示該數組是否可以存儲空值)我想要為我的add方法使用迭代器

public void add( T ele ) {

    int counter =0;
    int tempIndex =0;
    if(ele == null && this.allowed == false){
        throw new NullPointerException("This array does not accept null values!");
    }

    else{
        myIterator iterator = new myIterator();
        Iterator<T> it = this.iterator();


        for(Object o: this.arrayPal){
            System.out.print(it.hasNext());
            if(it.hasNext() == false && (this.arrayPal.length-1) > counter){
                arrayPal[counter+1] = ele;
            }
            else if (it.hasNext() == false && (arrayPal.length-1) == counter){
                //expand the array by quanta
                //add the the first newest index
                Object[] temp = new Object[this.arrayPal.length + quanta];

                for(Object b: this.arrayPal){
                    temp[tempIndex++] = b;
                }
                temp[this.arrayPal.length] = ele;
                this.arrayPal = temp;

            }
        counter++;
        }
}

但是,即使對於列表中的最后一個元素,.hasNext()也會保持返回true。 為什么是這樣?

另外,它不允許我這樣做.arrayPal.iterator()它說:

無法在數組類型Object []上調用iterator()

為什么不?

您的add方法獲取一個新的Iterator並多次調用it.hasNext() 它從不調用it.next() ,因此Iterator一直指向數組的第一個元素,而hasNext()永遠不會返回false(假設數組不為空)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM