Collections StackOverflowError in einer Queue

HausAmSee

Mitglied
Guten Abend
Ich habe eine Queue und möchte ein Feld der Queue hinzufügen.
Anschließend möchte ich wissen, wie viele Elemente in der Queue sind.

Code:
public class Queue {
.......
        public void append (int[] newData) {
          this.enQueue(newData);
          }
   
    public int size() {
        return Queue.this.size();  
        } 
}

Beim Ausführen allerdings entsteht bei der Rückgabe der size ein StackOverflowError. Am häugisten treten solche Fehler ja bei Rekursion auf. Da das hier aber keine Rekursion ist, wüsste ich nicht, wie ich den Overflow stoppen/verhindern könnte.

Jemand eine Idee, wie ich zum Lösen vorgehen kann?
Danke.
 
naja, du rufst direkt innerhalb der size-Methode die size-Methode auf... Vielleicht solltest du dir Gedanken machen, wie du die Länge berechnest. Um dir hierfür weitere Tipps zu geben, müsste man wissen, wie die Queue Werte speichert.
 
Die Queue speichert Werte so:
Code:
public class Elem {

   public Elem () { }

   public Elem (Object obj) {
      setObject(obj);
   }
   private Object obj;
   private Elem next;

   public void setObject (Object newObj)
      obj = newObj;
   }

   public Object getObject () {
      return obj;
   }

   public void setNext (Elem nextElem) {
      next = nextElem;
   }

   public Elem getNext () { /
      return next;
   }

Für Queues gibt es laut Dokumentation keine Methode, wie .length oder .length() .
Müsste man etwa mit einer for-Schleife zB durch die Queue gehen und jedes Mal, wenn ein Wert drin ist, einen Zähler inkrementieren, wie bei Arrays ohne Methodenzugriff oder Strings?
 
Jap, sieht sehr nach einer While-Schleife aus, die solange weiter geht, bis beim derzeitigen Elem der next-Verweis null ist. (am besten mit getNext() arbeiten)
 

Zurück
Oben