Ich habe eine Java-Zuweisung, die das Iterieren einer Prioritätswarteschlange beinhaltet. Die Warteschlange besteht aus Objekten mit einer Zeichenfolge und einem int darin, und ich muss eine Möglichkeit haben, die Zeichenfolge eines separaten Objekts gegen alle Objekte in der Warteschlange zu prüfen.
Wäre es der beste Weg, dies zu tun, ein Iterator-Objekt zu sein? Das scheint zu unordentlich. Ich könnte aus der Warteschlange nehmen und in die Warteschlange stellen, aber das scheint ineffizient zu sein. Vielleicht eine foreach-Schleife?
Ein kleines Detail: Wenn es eine Chance gibt, dass Ihre Warteschlange während der Schleife geändert werden kann, dann verursachen sowohl iterator
als auch for each
eine ConcurrentModificationException
; Wenn die Chance besteht, dass die Warteschlange während der Verarbeitung geändert wird, können Sie poll()
:
Wenn Ihnen die Reihenfolge egal ist (in diesem Fall - warum beschäftigen Sie sich mit PriorityQueue
?), verwenden Sie Iterator. Wenn Sie nach Priorität iterieren möchten, lesen Sie den Ratschlag von Javadoc :
Wenn Sie eine geordnete Traversierung benötigen, sollten Sie sie verwenden Arrays.sort (pq.toArray ()).
Tags und Links java queue iterator priority-queue foreach