Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
import java.util.ArrayList;
import java.util.Iterator;
public ArrayList <Double> jobs = new ArrayList();
Iterator <Double> it = jobs.iterator();
boolean jobDone = true;
double targetTime;
public void schalten()
{
if (jobDone && it.hasNext())
{
targetTime = it.next();
jobDone=false;
}
}
von einer anderen Klasse aus, werden dann irgendwann nach Start des Programms der obigen ArrayList 2 doubles zugefügt:
ampel.jobs.add(9,129);
ampel.jobs.add(6,169); (oder so ähnlich)
und zu dem Moment stürzt dann das Programm ab. und meldet sich:
"Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449) usw.usw.usw......"
Beim compilen meckert er nicht...
Habt ihr eine Idee woran das liegen könnte?? (ich weiß, dass es was mit dem zufügen zum array zu tun hat, weil ich den teil neu zugefügt hab und das programm vorher lief)
prinzipiell, scheint das ziemlich praktischt zu sein, nur ist das problem folgendes:
2 elemente befinden sich in der queue , die noch abgearbeitet werden müssen und ich will ein neues Element reinschmeißen, dass erst nach den beiden andern abgearbeitet werden soll.
in der queue kann ich ein neues element ja nur nach "oben" draufschmeißen und das kann dann "retrieved" werden, aber ich will ja erst die beiden alten sachen in der queue abarbeiten.
nene, das wäre was anderes, gibts auch: ein Stack,
eine Queue ist eine Warteschlange, wie vor dem Kino, wer zuerst kommt ist als erster dran,
wenn 2 da sind und noch einer kommt ist der Dritter und kommt erst dran wenn die ersten beiden dran waren,
so wie du es (anscheinend) willst, also Queue ist das richtige
Wenn du nur die Methoden einer Queue möchtest, dann verwendest du auch eine Variable diesen Typs.
So bist du allgemeiner, und kannst später jederzeit die LinkedList gegen eine andere Implementierung von Queue austauschen.
da gibts ja
........
void add(int index, E element)
Inserts the specified element at the specified position in this list.
.......
welches du anscheinend vorher bei ArrayList<Double> erfolgreich eingesetzt hast, oder was da was anderes?
da wurden doch double automaitisch in Double-Objekte gewandelt?
tja, und
.......
boolean offer(E o)
Adds the specified element as the tail (last element) of this list.
.........
ist dann doch vom Prinzip her das gleiche?
---------
mein Post ist jetzt nicht wirklich ein Tipp, da ich grad deinen Fehler nicht seh und auch nicht testen kan,
nur die Frage:
funktioniert add(int index, E element) mit der Queue wie früher mit der ArrayList?