Salve ragazzi,

sto progettando un dato astratto coda. su questo dato coda dovrei applicare un iteratore che permette di scandire la coda dall'inizio alla fine.

il problema è che l'iteratore non finisce mai va in loop infinito.

codice:
public class CodaCollegataT<T> implements CodaP<T> {
   private Record<T> inizio = null;
   private Record<T> fine =null;

   public void enqueue(T e) {
	   if(isEmpty()){
		   inizio = new Record<T>(e);
		   fine = inizio;
	   }
	   else
	   {
		   fine.next = new Record<T>(e, fine);
		   fine = fine.next;
	   }
   }

   public boolean isEmpty() {
	return inizio == null;
   }
   
  
public Iterator<T> iterator() {
	
	return new CodaIteratore(inizio);
}
   
   public static void main(String[] args)
   {
	   CodaP<String> codap = new CodaCollegataT<String>();
	   codap.enqueue("Ciccio spugna");
	   codap.enqueue("MarlonBrandon");
	   codap.enqueue("Brandon");
	   codap.enqueue("Marlon");
	   
	
	   Iterator it = codap.iterator();
	   while(it.hasNext())
	   {
		   System.out.println(it.next());
	   }
   }
}
interfaccia CodaP

codice:
package CodaP;
public interface CodaP<T> extends Iterable<T> {
   public boolean isEmpty();
   public void enqueue(T e);
}
iteratore
codice:
package CodaP;

import java.util.Iterator;

public class CodaIteratore<T> implements Iterator<T>{
   
//	CodaCollegataT<T> p;
    Record<T> inizio;
 //   Record<T> fine;
    
    CodaIteratore(/*CodaCollegataT<T>*/Record<T> p)
    {
    	this.inizio=p;
    //	inizio = fine = null;
    }
	@Override
	public boolean hasNext() {
		// TODO Auto-generated method stub
		if(inizio.next==null)
			return false;
		return true;
	}

	@Override
	public T next() {
		// TODO Auto-generated method stub
		if(hasNext()){
			Record<T> temp = inizio;
			inizio = inizio.next;	
			return (T)temp.elem;
		   
		}
		return null;
	}

	@Override
	public void remove() {
		// TODO Auto-generated method stub
		
	}
}
quello che io ottengo è questo:

Ciccio spugna
MarlonBrandon
Brandon
Marlon
Brandon
Marlon
Brandon
Marlon

praticamente all'iizio va bene poi mi stampa sempre gli ultimi due elementi

come mai?????