Iterator.remove() IllegalStateException
Im code unten habe ich einen try-catch-block, der versucht, entfernen Sie ein element aus einem Vektor mit Iterator. Ich habe meine eigene Klasse QueueExtendingVect
erweitert Vector
und implementiert Iterator
.
Die variable qev1
eine Instanz der Klasse QueueExtendingVect
. Hab ich schon Hinzugefügt, ein paar Elemente dieses Vektors als gut.
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 diesem code füge ich ein paar Elemente der Vektor-qev1. Die anderen Variablen sind in anderen teilen des Codes.
Allerdings, wenn ich aus meinem Programm erhalte ich eine IllegalStateException zur Laufzeit. Ich bin mir nicht sicher, was das bedeutet.
Ist es möglich, es gibt nichts in Ihrem iterator? Bitte mehr code. Speziell, welche Art ist die Sammlung sind Sie Durchlaufen?
InformationsquelleAutor Delfino | 2014-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht genannt
next()
auf IhreIterator
, so ist es nicht in Bezug auf das erste Element noch. Sie können nicht entfernen Sie das Element, das nicht noch angegeben.Call
next()
zu fördern, um das erste Element first, dann rufen Sieremove()
.erstellen Sie einen neuen iterator mit diesem Anruf. Die Fragen steht. Diese Antwort ist richtig.
Das geschah auch mit mir. Aber die Ursache war nicht das gleiche, ich rief
it.remove()
zweimal oder mehr, das führt zu IllegaStateException.InformationsquelleAutor rgettman