Itérateur.remove() IllegalStateException
Dans le code ci-dessous j'ai un bloc try catch qui tente de supprimer un élément d'un Vecteur, à l'aide d'Itérateur. J'ai créé ma propre classe QueueExtendingVect
qui s'étend Vector
et met en œuvre Iterator
.
La variable qev1
est une instance de la classe QueueExtendingVect
. Je l'ai déjà ajouté quelques éléments de ce Vecteur.
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));
}
}
Dans ce code, je l'ai ajouter quelques éléments du Vecteur qev1. Les autres variables sont dans d'autres parties du code.
Cependant, lorsque je lance mon programme, j'obtiens une exception IllegalStateException au moment de l'exécution. Je ne suis pas sûr de ce que cela signifie.
Est-il possible qu'il n'y a rien dans votre itérateur? Veuillez fournir plus de code. Précisément quel type est la collection que vous êtes une itération à travers?
OriginalL'auteur Delfino | 2014-03-12
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas appelé
next()
sur votreIterator
, il n'est donc pas en se référant à la première question encore. Vous ne pouvez pas supprimer l'élément qui n'est pas spécifié encore.Appel
next()
à l'avance sur le premier élément premier, puis appelerremove()
.vous créez un nouvel itérateur avec cet appel. Les questions se dresse. Cette réponse est correcte.
C'est aussi arrivé à moi. Mais la cause n'était pas la même, j'ai été appeler
it.remove()
deux fois ou plus, qui va conduire à IllegaStateException.OriginalL'auteur rgettman