Frage zum Schlange-Programm

Moin Leutes!
Ich bastel da gerade wiender an nem kleinen Programm herum.
Folgende codes:
Code:
  //package listenklassen;

public class Queue<ContentType> {
   
   
   
   private class QueueNode {

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

       
       public QueueNode(ContentType pContent) {
           content = pContent;
           nextNode = null;
       }

     
       public void setNext(QueueNode pNext) {
           nextNode = pNext;
       }
       
       public QueueNode getNext() {
           return nextNode;
       }

      
       public ContentType getContent() {
           return content;
       }
       
   }
   
  
   
   private QueueNode head ;
   private QueueNode tail ;


   public Queue() {
       head = null;
       tail = null;
   }

  
   public boolean isEmpty() {
       return head == null;
   }
                                           
   
   
   
   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;
           }
       }
   }

 
   public void dequeue() {
       if (!this.isEmpty()) {
           head = head.getNext();
           if (this.isEmpty()) {
               head = null;
               tail = null;
               System.out.println("Die Schlange ist leer");
           }
       }
   }
   
  
   public ContentType front() {
       if (this.isEmpty()) {
           return null;
       } else {
           return head.getContent();
       }
       
       }
       
   public void sagName(ContentType pContent) {
       System.out.println(((person) pContent).infoName());
   }
}
Code:
class person{
       String name;
       
       public person (String name){
           this.name = name;
       }
   
   public String infoName() {
       return name;
   }
   
}
Code:
public class test {

   public static void main(String[] args) {
       // TODO Auto-generated method stub

       person p1 = new person ("Ezekiel");
       person p2 = new person ("Amenadiel");
       person p3 = new person ("Gabriel");
       person p4 = new person ("Sabbath");
       Queue w = new Queue<person>();
         w.enqueue(p1);
         w.enqueue(p2);
         w.enqueue(p3);
         w.enqueue(p4);

         System.out.println("Erste Person: " + ((person)w.front()).infoName());
         
         w.dequeue();
       System.out.println("Zweite Person: " + ((person)w.front()).infoName());
       
       w.dequeue();
     System.out.println("Dritte Person: " + ((person)w.front()).infoName());
     
     w.dequeue();
     System.out.println("Vierte Person: " + ((person)w.front()).infoName());
     
   
   }

}

Wenn man es ausführt, wird folgendes ausgegeben:
Code:
Erste Person: Ezekiel
Zweite Person: Amenadiel
Dritte Person: Gabriel
Vierte Person: Sabbath


So weit so gut.
Was bzw. wie kann ich jetzt eine Methode implementieren, damit in der Schlange nach jedem Durchlauf der for-Schleife die oberste Person aus der Schleife entfernt und nicht mehr angezeigt wird?

Hoffe jemand hier kann mir helfen.
LG Max
 

melmager

Erfahrenes Mitglied
Da der erste Eintrag in der Variable head gespeichert wird muss man da ansetzen

Code:
public void removeFirst() {
if (head != null) {
 head = head.getNext();
}
}

damit wird der erste Eintrag durch den zweiten Eintrag überschrieben.

PS kuck dir mal
Class ConcurrentLinkedDeque<E>
an :)