Interface MergeablePriorityQueueDouble<E,T extends MergeablePriorityQueueDouble<E,T>>

Type Parameters:
E - The type of object contained in the PriorityQueueDouble.
T - The type of MergeablePriorityQueueDouble supported by the merge
All Superinterfaces:
Collection<PriorityQueueNode.Double<E>>, Iterable<PriorityQueueNode.Double<E>>, PriorityQueueDouble<E>, Queue<PriorityQueueNode.Double<E>>
All Known Implementing Classes:
BinaryHeapDouble, FibonacciHeapDouble

public interface MergeablePriorityQueueDouble<E,T extends MergeablePriorityQueueDouble<E,T>> extends PriorityQueueDouble<E>

A MergeablePriorityQueueDouble is a PriorityQueueDouble that includes a merge method. All PriorityQueueDouble implementations enforce distinct elements, and use the Object.hashCode() and Object.equals(java.lang.Object) methods to to enforce distinctness, so be sure that the class of the elements properly implements these methods, or else behavior is not guaranteed.

  • Method Details

    • merge

      boolean merge(T other)

      Merges another priority queue into this one, adding all of its (element, priority) pairs. This is a destructive operation with no guarantees to the state of the other priority queue upon completion. Additionally, implementations of this method may assume that other and this do not share any elements, and the priority queue may become unstable if they do. The priority order of both priority queues must be the same (e.g., both minheaps or both maxheaps).

      Parameters:
      other - The priority queue that you want to merge into this. Implementations need not make any guarantees as to the state of other upon completion.
      Returns:
      true if and only if this priority queue changed as a result of the merge