2012-10-02 4 views

Répondre

5

Depuis l'interface Queue:

Queues en général, mais ne sont pas nécessairement, des éléments de commande d'une manière FIFO (first-in-first-out). Parmi les exceptions sont les files d'attente prioritaires, qui commandent des éléments selon un comparateur fourni, ou les éléments de commande naturel

Alors PriorityQueue est une exception et il devient une file d'attente FIFO uniquement si les types de comparaison dans cet ordre.

5

Non, ce n'est pas le cas. Selon Javadoc

Les éléments de la file d'attente de priorité sont ordonnées selon leur ordre naturel, ou par un comparateur prévu au moment de la construction de files d'attente, selon le constructeur est utilisé

ET

La tête de cette file d'attente est le dernier élément par rapport à la commande spécifiée

+0

+ 1, la commande pourrait théoriquement être FIFO, mais il est généralement utilisé pour quelque chose de plus intéressant. –

3

PriorityQueue ne se soucie pas de FIFO/LIFO. il gère la priorité. dans le cas de plusieurs objets avec la même priorité - vous ne pouvez pas compter sur un comportement FIFO LIFO.

2

Une file d'attente prioritaire est une structure de données qui conserve les éléments dans un ordre interne cohérent - dans l'implémentation Java, cette commande est spécifiée au moment de la construction. La tête de la file d'attente et l'ordre des autres éléments sont déterminés par les critères de commande que vous spécifiez. Par exemple, supposons que vous ayez une classe PriorityQueue contenant des élèves, et que l'ordre que vous définissez corresponde à l'âge ascendant - la tête de la file contiendra l'élève le plus jeune et la queue sera la plus ancienne. Au fur et à mesure que vous ajoutez à PriorityQueue, l'étudiant sera inséré dans la bonne position en fonction de son âge, car c'est la commande que vous avez spécifiée, l'ordre de leur insertion n'est pas pertinent.

Questions connexes