Simply, it depends on the collection that you are using. If you are using a Hashtable, HashMap, HashSet, etc., ie. any hashing collection, you will need to override equals() and hashCode() for your object to be stored properly.
If you are using a TreeSet, or any collection that sorts the elements, then you either need to implement Comparable, or use a Comparator.
And if you don't know how your class will be used, but can be used in any of the collection classes, by other developers, then I guess,
you should implement both.
Henry