@Override
        public T extract() throws NoSuchElementException {
                T returnValue = peek();
                map.remove(returnValue);
                PQElement<T> z = heap.remove(heap.size() - 1);
                if (!heap.isEmpty()) {
                        set(0, z);
                        rotateDown(0);
                }
                return returnValue;
        }