@Override public int compareTo(DocumentMetadata o) { // don't use static comparators since we may get bounced back here if (getTitle().equals(o.getTitle()) == false) { return getTitle().compareTo(o.getTitle()); } if (getAuthor().equals(o.getAuthor()) == false) { return getAuthor().compareTo(o.getAuthor()); } if (getPubDate().equals(o.getPubDate()) == false) { return getPubDate().compareTo(o.getPubDate()); } return Integer.compare(hashCode(), o.hashCode()); // give up }