2010-12-09 2 views
1

Ich erhalte den Fehler "Iterator kann nicht in einen Typ aufgelöst werden". Ich versuche, die Storage-Klasse zu nehmen und den Code hinzuzufügen, der notwendig ist, um die Collections-Klasse von Java zu implementieren. Ich denke nicht, dass ich Iterator importieren darf, ich denke, ich muss mein eigenes machen.Probleme beim Erstellen meines eigenen Iterators für eine Sammlungsklasse

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; 
      } 
     }; 
    } 
} 
+1

in der allgemeinen Praxis, Klassen Name beginnt mit Kapitälchen ... 'Storage' –

Antwort

4

Sie müssen import java.util.Iterator;

1

Dieser Code ist nicht einmal falsch; Besuche die Iteratormethoden:

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

Ihre Iterator nicht die java.util.Iterator Schnittstelle nicht implementiert; mit dem gleichen Namen macht es nicht eins.

Schauen Sie sich Ihre Methode:

public int hasNext() 

Die java.util.Iterator hasNext() einen Booleschen Wert zurück.

Das ist völlig falsch.