In java.util.PriorityQueue abbiamo i metodi add(E e)
e offer(E e)
. Entrambi i metodi sono documentati come:
Inserts the specified element into this priority queue.
Quali sono le differenze tra questi due metodi?
In java.util.PriorityQueue abbiamo i metodi add(E e)
e offer(E e)
. Entrambi i metodi sono documentati come:
Inserts the specified element into this priority queue.
Quali sono le differenze tra questi due metodi?
La differenza è che offer()
restituirà false
se non riesce a inserire l'elemento su una dimensione limitata Queue , mentre add()
genererà un IllegalStateException
.
Dovresti usare offer()
quando l'errore di inserire un elemento sarebbe normale, e add()
quando il fallimento sarebbe un evento eccezionale (che deve essere gestito).
Per scoprire la differenza, è necessario seguire API javadoc PriorityQueue che a loro volta hanno sezioni "Specificato da" che rimandano il lettore ai rispettivi metodi nell'interfaccia Queue
:
Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions, returning true upon success and throwing an IllegalStateException if no space is currently available...
Returns:true
(as specified by Collection.add(E))
Throws:IllegalStateException
- if the element cannot be added at this time due to capacity restrictions...
Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions. When using a capacity-restricted queue, this method is generally preferable to add(E), which can fail to insert an element only by throwing an exception...
Returns:true
if the element was added to this queue, elsefalse
...
Entrambi i metodi sono presenti perché questi devono essere implementati dall'interfaccia dichiarata.
Da quando PriorityQueue è illimitato (come indicato in javadocs: " coda di priorità illimitata basata su un heap di priorità ..."), le preferenze dei progettisti di API espresse sopra non si applicano. Ciò significa che è a discrezione del programmatore scegliere il metodo più adatto alle proprie esigenze in uno specifico contesto di utilizzo.
Leggi altre domande sui tag java collections