title: PriorityQueue has objects with the same priority
body: <p>I'm using a priority queue to sort and use a large number of custom objects. The objects have a "weight" that is their natural ordering. However, different objects that are inserted into the priority queue may have the same "weight". In such cases, I want the priority queue to order them in the same order in which they were put into the queue.</p>
  
  <p>For example, if I add in CustomObjects A,B,C,D in that order, all with the same "weight", than the priority queue should return them in that order as well - even if I poll one or more of the objects before adding in the others.</p>
  
  <p>Here is the CompareTo for my custom object:</p>
  
  <pre><code>public int compareTo(CustomObject o) {
      int thisWeight = this.weight;
      int thatWeight = o.weight;
      if(thisWeight &lt; thatWeight){
          return -1;
      }
      else{
          return 1;
      }
  }
  </code></pre>
  
  <p>While I thought that this would maintain that initial order, it doesn't. This occurs when I input A,B,C with weight 1; poll A; and add D,E also with weight 1. Somehow, D and E are sorted after B, but before C.</p>
  
  <p>I am aware that the Iterator for PriorityQueues doesn't return the correct ordering, so I am limited in my ability to look at the ordering - however I can see the order that the elements leave the queue and it clearly doesn't follow the path that I want it to.</p>
  
  <p>Suggestions?</p>