Dans java.util.PriorityQueue, nous avons les méthodes add(E e)
et offer(E e)
. Les deux méthodes sont documentées comme:
Insère l'élément spécifié dans cette file d'attente prioritaire.
Quelles sont les différences entre ces deux méthodes?
Dans java.util.PriorityQueue, nous avons les méthodes add(E e)
et offer(E e)
. Les deux méthodes sont documentées comme:
Insère l'élément spécifié dans cette file d'attente prioritaire.
Quelles sont les différences entre ces deux méthodes?
Réponses:
La différence est que offer()
retournera false
s'il ne parvient pas à insérer l'élément dans une file d'attente de taille restreinte , tandis que add()
lancera un IllegalStateException
.
Vous devez l'utiliser offer()
lorsque l'échec de l'insertion d'un élément est normal et add()
lorsque l'échec est une occurrence exceptionnelle (qui doit être gérée).
Pour découvrir la différence, il faut suivre les javadocs de l'API PriorityQueue qui à leur tour ont des sections "Spécifiées par" qui renvoient le lecteur aux méthodes respectives de l' Queue
interface:
Insère l'élément spécifié dans cette file d'attente s'il est possible de le faire immédiatement sans violer les restrictions de capacité, en retournant true en cas de succès et en lançant une exception IllegalStateException si aucun espace n'est actuellement disponible ...
Renvoie:true
(comme spécifié par Collection.add (E) )
Lance:IllegalStateException
- si l'élément ne peut pas être ajouté à ce moment en raison de restrictions de capacité ...
Insère l'élément spécifié dans cette file d'attente s'il est possible de le faire immédiatement sans violer les restrictions de capacité. Lorsque vous utilisez une file d'attente à capacité limitée, cette méthode est généralement préférable d'ajouter (E), qui peut échouer à insérer un élément uniquement en lançant une exception ...
Retourne:true
si l'élément a été ajouté à cette file d'attente, sinonfalse
...
Les deux méthodes sont présentes car elles doivent être implémentées par l'interface déclarée.
Notez que comme PriorityQueue est illimité (comme indiqué dans javadocs: " file d'attente de priorité illimitée basée sur un segment de priorité ..."), la préférence des concepteurs d'API exprimée ci-dessus ne s'applique pas. Cela signifie qu'il est laissé à la discrétion du programmeur de choisir la méthode qui convient le mieux à ses besoins dans un contexte d'utilisation spécifique.