title: Retrieve Least Element, Elements are Dynamically-Ordered
body: <p>I have collection of elements from which I need to retrieve the least/minimum element.</p>
  
  <p>Normally I would use a PriorityQueue as they are designed specifically for this purpose, and offer O(log(n)) time for dequeing methods.</p>
  
  <p>However, the elements in my array have a dynamic order, ie there natural order changes unpredictably over time. I <em>assume</em> PriorityQueue and other such Sorted collections sort an element when inserted, and then leave it. If this is so PriorityQueue wouldn't work for dynamically-ordered elements. Am I correct in my assumption? Or would PriorityQueue still be appropriate in this situation?</p>
  
  <p>If I can't use PriorityQueue, Collections.min would be my next instinct. However this iterates over the entire collection, which presumably gives O(n) time. Is this the next best solution?</p>
  
  <p><strong>
  What is the best collection/method to use to retrieve the least element from a collection, given that the natural order of the elements may change unpredictably over time?</strong></p>
  
  <p>Edit:<br>
  The order of several elements changes per retrieval operation</p>
  
  <p>Edit 2:<br>
  The compare algorithm remains constant, however the values of the fields which it assesses vary unpredictably between retrievals.</p>