title: Java's Comparator Contract
body: <p>It says in the contract for the Comparator interface, that it must be consistent with equals.</p>
  
  <p>Does this mean that Comparator = zero if equalsTo = true , or does it mean that Comparator = zero if <em>and only if</em> equalsTo = true?</p>
  
  <p>I seem to remember that it is the second one, but I have come across lots of comparators which sort by non-unique sub properties.</p>
  
  <p>For example, I might have objects which have a sub-property date, and I want to sort my list of objects by the date of submission. However, you can have several objects with the same date? What are the consequences of this? Surely there is a best practice solution to this problem already? How can I sort a collection by a property which is not guaranteed to be unique without violating the comparator contract? What are the consequences for this type of violation? Are they manageable?</p>