I don't think that there's any obvious ordering for null and "x" (or some other arbitrary object)...I would be inclined to throw an exception if null is passed in. If you're sorting a list with nulls, it's probably best to filter them out before sorting. I definitely give a (non-binding) -1 to any kind of special case null handling.
-- Tim Moore / Blackboard Inc. / Software Engineer 1899 L Street, NW / 5th Floor / Washington, DC 20036 Phone 202-463-4860 ext. 258 / Fax 202-463-4863 > -----Original Message----- > From: Michael A. Smith [mailto:[EMAIL PROTECTED]] > Sent: Friday, June 07, 2002 4:00 PM > To: Jakarta Commons Developers List > Subject: RE: [Collections] ComparableComparator - nulls OK > > > On Fri, 7 Jun 2002, Eric Pugh wrote: > > +1, In my sorts, having to deal with nulls is causing me > difficulties > > +as > > well.. Although I could see something like any nulls being > ignored as > > a type of behavior.. Sort everything, and drop the nulls! > > consider: Comparator.compare(null, "x"); > > how do you drop or ignore the null when doing this compare? > > > > -----Original Message----- > > From: Jonathan Carlson [mailto:[EMAIL PROTECTED]] > > Sent: Friday, June 07, 2002 3:38 PM > > To: [EMAIL PROTECTED] > > Subject: [Collections] ComparableComparator - nulls OK > > > > > > I'd like to make the case for a ComparableComparator that > allows the > > sorting of nulls to the bottom. This could be a flag to set on the > > existing class or another Comparator called something like > > NullableComparableComparator (or ComparableNullComparator?). > > How about something like this: > > public class NullFirstComparator implements Comparator { > private Comparator c; > public NullFirstComparator(Comparator nonNullComparator) { > this.c = nonNullComparator; > } > public int compare(Object a, Object b) { > if(a == b) return 0; > if(a == null) return -1; > if(b == null) return 1; > return c.compare(a,b); > } > } > > and > > public class NullLastComparator implements Comparator { > private Comparator c; > public NullLastComparator(Comparator nonNullComparator) { > this.c = nonNullComparator; > } > public int compare(Object a, Object b) { > if(a == b) return 0; > if(a == null) return 1; > if(b == null) return -1; > return c.compare(a,b); > } > } > > > That allows you to adjust the behavior of comparison to null for any > comparator and not just the ComparableComparator. It sounds like in > your case (sorting nulls last using ComparableComparator), you'd use: > > new NullLastComparator(ComparableComparator.getInstance()) > > > If that sounds reasonable, I'll add a full implementation > (with a better > "Comparator.equals" method) to the list of things on my todo list. > > regards, > michael > > p.s. I just threw together the above implementations. I > wouldn't trust it to actually sort things properly (or even > compile) -- I may have things reversed or something where > nulls go first instead of last and vice-versa. > > > -- > To unsubscribe, e-mail: > <mailto:commons-dev-> [EMAIL PROTECTED]> > For > additional commands, > e-mail: <mailto:[EMAIL PROTECTED]> > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
