3

I just want to know if Java's PriorityQueue collection automatically heapifies, if any of the keys used in the comparator is mutated, or do i need to explicitly call heapify, to order the binary tree ? I am experimenting with the data structure to use it in a cache like setting, where an object in the collection should be immediately moved to the head, as soon as it is referenced.

akhil
  • 31
  • 5
  • You can create a very effective cache by combining a hash map and a linked list. See https://stackoverflow.com/questions/22002814/is-this-algorithm-implementation-lru-or-mru for an example. It's in C#, but you should be able to convert it to Java easily enough. – Jim Mischel Jun 28 '17 at 13:55

1 Answers1

3

The queue automatically heapifies on operations that mutates the queue itself, namely offer, poll, remove and add.

If you mutate an element you have to remove and re-insert it. The priority queue has no way of knowing that an element has been updated.

Jean Logeart
  • 52,687
  • 11
  • 83
  • 118