Java PriorityQueue zu einer stabilen Prioritätswarteschlange machen

Ich versuche, eine stabile (first in first out) Prioritätswarteschlange in Java zu implementieren. Angenommen, der Schlüssel ist ein Name und der Wert ist ein Alter. Ich weiß, dass ich eine Warteschlange mit instabiler Priorität wie folgt erstellen kann:

Queue<Map.Entry<String, Integer>> pq = new PriorityQueue<Map.Entry<String, Integer>>(100, ageComparator);

Das macht so ziemlich alles, was ich brauche, außer dass es die Reihenfolge der Schlüssel-Wert-Paare nicht beibehält, wenn ich sie einfüge (oder entferne).

Ich habe eine "Umgehungslösung" gefunden, indem ich eine LinkedList erstellt habe, die im Wesentlichen die gleiche Funktionalität bietet, außer dass sie keinen Konstruktor mit einer Komparatoroption enthält, und ich bin der Meinung, dass sie langsamer sein muss, da ich die Wertereihenfolge beibehalte telefonischCollections.sort() nach jeder Warteschlangenoperation.

Ich denke also, dass es wirklich zwei Optionen gibt, die mich interessieren. Erstens, wie könnte ich die PriorityQueue oben bearbeiten, um die Reihenfolge des Einfügens und Entfernens beizubehalten? Oder zweitens, wie könnte ich meine LinkedList-Option dazu zwingen, sofort einen Komparator zu verwenden, anstatt bei jeder Operation eine Sortierung aufrufen zu müssen? Vielen Dank!

BEARBEITEN:

Vielen Dank für die gute Frage im ersten Kommentar, der gepostet wurde. Mit FIFO meine ich, dass für Schlüssel-Wert-Paare mit gleichen Werten das zuerst eingegebene Paar zuerst extrahiert werden sollte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage