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]>

Reply via email to