Durchlaufen einer Queue

pmSave

Mitglied
Hallo, also um es kurz zu halten: ich weiß wie man eine Queue durchläuft... -dachte ich zumindest. Im Beispiel geht es darum, dass es eine Klassenvariable einer Queue die Objekte vom Typ Koordinate verwaltet gibt und ich von dieser Queue auf das letzte Objekt zugreifen möchte, dieses Stellt bei mir im Kontext die Position da. Jetzt habe ich das hier unten geschrieben, aber es ist leider so, dass die Klassenvariable der Queue nach einem Aufruf der Methode getPosition() auf null gesetzt wird. Ich verstehe das nicht, da ich doch eigentlich eine temporäre Variable benutze um mit der Queue zu arbeiten. Sieht vlt jemand mehr als ich oder hat eine alternative Lösung, um das letzte Objekt einer Queue zurückzugeben? Danke!

Java:
public Koordinate getPosition() { 
        Queue<Koordinate> tmp = this.getFullPosition();
        Koordinate k = tmp.front();
        while(!tmp.isEmpty()) {
            k = tmp.front();
            tmp.dequeue();
        }
        return k;
    }
 

pmSave

Mitglied
Ich hatte eine Kopie von der aus dem Zentralabitur..

Java:
/**
 * <p>
 * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
 * </p>
 * <p>
 * Generische Klasse Queue<ContentType>
 * </p>
 * <p>
 * Objekte der generischen Klasse Queue (Warteschlange) verwalten beliebige
 * Objekte vom Typ ContentType nach dem First-In-First-Out-Prinzip, d.h., das
 * zuerst abgelegte Objekt wird als erstes wieder entnommen. Alle Methoden haben
 * eine konstante Laufzeit, unabhaengig von der Anzahl der verwalteten Objekte.
 * </p>
 * 
 * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
 * @version Generisch_02 2014-02-21
 */
public class Queue<ContentType> {
          
          /* --------- Anfang der privaten inneren Klasse -------------- */
          
          private class QueueNode {

                    private ContentType content = null;
                    private QueueNode nextNode = null;

                    /**
                     * Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen. 
                     * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
                     * 
                     * @param pContent das Inhaltselement des Knotens vom Typ ContentType
                     */
                    public QueueNode(ContentType pContent) {
                              content = pContent;
                              nextNode = null;
                    }

                    /**
                     * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
                     * gesetzt.
                     * 
                     * @param pNext der Nachfolger des Knotens
                     */
                    public void setNext(QueueNode pNext) {
                              nextNode = pNext;
                    }
                    
                    /**
                     * Liefert das naechste Element des aktuellen Knotens.
                     * 
                     * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
                     */
                    public QueueNode getNext() {
                              return nextNode;
                    }

                    /**
                     * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
                     * 
                     * @return das Inhaltsobjekt des Knotens
                     */
                    public ContentType getContent() {
                              return content;
                    }
                    
          }
          
          /* ----------- Ende der privaten inneren Klasse -------------- */
          
          private QueueNode head;
          private QueueNode tail;

          /**
           * Eine leere Schlange wird erzeugt. 
           * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
           * ContentType sein.
           */
          public Queue() {
                    head = null;
                    tail = null;
          }

          /**
           * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt, 
           * sonst liefert sie den Wert false.
           * 
           * @return true, falls die Schlange leer ist, sonst false
           */
          public boolean isEmpty() {
                    return head == null;
          }

          /**
           * Das Objekt pContentType wird an die Schlange angehaengt. 
           * Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
           * 
           * @param pContent
           *            das anzuhaengende Objekt vom Typ ContentType
           */
          public void enqueue(ContentType pContent) {
                    if (pContent != null) {
                              QueueNode newNode = new QueueNode(pContent);
                              if (this.isEmpty()) {
                                        head = newNode;
                                        tail = newNode;
                              } else {
                                        tail.setNext(newNode);
                                        tail = newNode;
                              }
                    }
          }

          /**
           * Das erste Objekt wird aus der Schlange entfernt. 
           * Falls die Schlange leer ist, wird sie nicht veraendert.
           */
          public void dequeue() {
                    if (!this.isEmpty()) {
                              head = head.getNext();
                              if (this.isEmpty()) {
                                        head = null;
                                        tail = null;
                              }
                    }
          }

          /**
           * Die Anfrage liefert das erste Objekt der Schlange. 
           * Die Schlange bleibt unveraendert. 
           * Falls die Schlange leer ist, wird null zurueckgegeben.
           *
           * @return das erste Objekt der Schlange vom Typ ContentType oder null,
           *         falls die Schlange leer ist
           */
          public ContentType front() {
                    if (this.isEmpty()) {
                              return null;
                    } else {
                              return head.getContent();
                    }
          }
}
 

mihe7

Top Contributor
Ich verstehe das nicht, da ich doch eigentlich eine temporäre Variable benutze um mit der Queue zu arbeiten.
Das ist recht einfach zu erklären: das Queue-Objekt existiert nur einmal, Deine Instanzvariable hält eine Referenz darauf und tmp ist dann die Kopie der Referenz.

Bei dieser Queue-Implementierung gibt es keine andere Möglichkeit, als die komplette Queue zu leeren, um an das letzte Element zu kommen. D. h. Du musst die Queue in eine temporäre Queue kopieren und anschließend wieder zurück in die ursprüngliche Queue schreiben.
 

pmSave

Mitglied
Danke! Das heißt also ich müsste quasi die Queue Objekt nach Objekt in die temporäre übertragen z.B. mit einer weiteren while-Schleife(so habe ich das verstanden)
 

pmSave

Mitglied
Aber theoretisch könnte ich doch wenn ich die temporäre habe den Verweis der Klassenvariablen-Queue auf die temporäre setzen oder nicht? Und damit noch etwas Arbeit sparen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Klassen in einer Schleife durchlaufen Allgemeine Java-Themen 11
N neue Objektnamen durchlaufen Allgemeine Java-Themen 12
F Registry Ordner durchlaufen Allgemeine Java-Themen 1
B ArrayRecord durchlaufen Allgemeine Java-Themen 2
S Kombinationsmöglichkeiten durchlaufen Allgemeine Java-Themen 3
E Array durchlaufen Allgemeine Java-Themen 2
F JAXB / Listen durchlaufen Allgemeine Java-Themen 17
G Array rekursiv durchlaufen Allgemeine Java-Themen 2
E Wie Arraylisten auf bestimmte Art durchlaufen? Allgemeine Java-Themen 3
C Geschachtelte For-Schleife: Äußere Schleife wird nur einmal durchlaufen!? Allgemeine Java-Themen 3
Dit_ Sortierte DatenListe am schnellsten durchlaufen Allgemeine Java-Themen 20
G Byte- List mit einem Iterator durchlaufen Allgemeine Java-Themen 5
M Verzeichnis durchlaufen und Dateien umbennen Allgemeine Java-Themen 2
M Enumeration Rückwärs durchlaufen Allgemeine Java-Themen 5
MQue Tidy HTML baum durchlaufen Allgemeine Java-Themen 5
P ArrayList durchlaufen Allgemeine Java-Themen 5
MQue HashMap durchlaufen Allgemeine Java-Themen 2
G Durchlaufen eines Arrays Allgemeine Java-Themen 4
E 20-mal ein programm durchlaufen lassen und Allgemeine Java-Themen 3
E Iterator durchlaufen? Allgemeine Java-Themen 8
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
M Funktion wird nicht durchlaufen. Allgemeine Java-Themen 13
K HashMap durchlaufen mit Iterator Allgemeine Java-Themen 5
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Wie kann ich den Wert aus einer If abfrage ausgeben Allgemeine Java-Themen 23
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
N BlueJ Implementation einer Analoguhr Allgemeine Java-Themen 0
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
J Suchen von einer Scannereingabe in einem HashSet Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
T Google Links in einer Liste Allgemeine Java-Themen 4
T Sinn einer toString Methode Allgemeine Java-Themen 3
J Größe einer CD ermitteln Allgemeine Java-Themen 10
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
H Länge einer verketteten Liste Allgemeine Java-Themen 4
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben