I recently ran into a problem where I wanted to add objects attained by reflection to a TreeSet. In this specific case, I had a problem when a Locale object was retrieved. It could not be added to the TreeSet because it is not "Comparable." It did, however, have toString values that could be sorted intelligibly.
I decided to create a Comparator that would handle arbitrary objects, and allow them to be added to a TreeSet of type Object:
The caveat is that this works best when the object in question overrides the default toString method in a meaningful way. If the base Object.toString() method is inherited by the object, then the sorting will most likely appear random, since the method looks like this:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
No comments:
Post a Comment