Iteratore.remove() IllegalStateException

Nel codice riportato di seguito ho un blocco try catch che tenta di rimuovere un elemento da un Vettore, utilizzando Iteratore. Ho creato la mia classe QueueExtendingVect che si estende Vector e implementa Iterator.

Variabile qev1 è un’istanza della classe QueueExtendingVect. Ho già aggiunto alcuni elementi di questo Vettore.

try 
{
   qev1.iterator().remove();
}
catch(UnsupportedOperationException e) 
{
   System.out.println("Calling Iterator.remove() and throwing exception.");
}

qev1.enqueue(ci); 
qev2.enqueue(ci);
qcv1.enqueue(ci);
qcv2.enqueue(ci);

for (int i = 1; i < 5; i++)
{
   if (i % 2 == 0)
   {
       qev1.enqueue(new CInteger(i+1));
       qev2.enqueue(new CInteger(i+1));
       qcv1.enqueue(new CInteger(i+1));
       qcv2.enqueue(new CInteger(i+1));
   } 
   else 
  { 
       qev1.enqueue(new Date(i*i));
       qev2.enqueue(new Date(i*i));
       qcv1.enqueue(new Date(i*i));
       qcv2.enqueue(new Date(i*i));
   }
}

In questo codice ho aggiunto un paio di elementi del Vettore qev1. Le altre variabili sono in altre parti del codice.

Tuttavia, quando ho eseguito il mio programma e ho un IllegalStateException in fase di runtime. Io non sono sicuro di cosa significhi.

È possibile che non c’e ‘ nulla iteratore? Si prega di fornire il codice più. In particolare che tipo è la collezione di sei iterare attraverso?

OriginaleL’autore Delfino | 2014-03-12

One Reply
  1. 24

    Non hai chiamato next() sul tuo Iterator, quindi non fa riferimento al primo elemento di sicurezza. Non è possibile rimuovere l’elemento che non è specificato di sicurezza.

    Chiamata next() di anticipo il primo elemento prima, quindi chiamare remove().

    Ho rifatto il codice per includere l’istruzione “qev1.iterator().next()” , ma sto ancora ricevendo lo stesso errore. C’è qualche altro motivo per cui ho questo errore?
    si crea un nuovo iteratore con quella chiamata. I problemi stand. Questa risposta è corretta.
    Questo è accaduto anche a me. Ma la causa non era la stessa, che mi stava chiamando it.remove() due o più volte, il che porterà ad IllegaStateException.

    OriginaleL’autore rgettman

Lascia un commento