commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Carlson <joncrl...@yahoo.com>
Subject RE: [Collections] ComparableComparator - nulls OK
Date Fri, 07 Jun 2002 20:32:12 GMT
That's even more concise and flexible.  I like it.  Is this
called distributed pair programming?  :-)

Jonathan

--- Henri Yandell <bayard@generationjava.com> wrote:
> 
> Could this not be:
> 
> public class NullComparator {
> 
>     public NullComparator(int n) {
> // default to Comparable
>     }
> 
> // have a comparator,int argument
> 
>     public int compareTo(Object o1,Object o2) {
>         if(o1 == null) { return n; }
>         if(o2 == null) { return -1 * n; }
>         return internal.compareTo(o1,o2);
>     }
> }
> 
> ie) set the number to return. That way First, Last and
> Zero can all go in
> the same one?
> 
> Hen
> 
> On Fri, 7 Jun 2002, Tim Moore wrote:
> 
> > Yeah, I like the NullFirstComparator and
> NullLastComparator better than
> > adding a flag to ComparableComparator.
> >
> > +1 to all of Paul's suggestions. :-)
> > --
> > 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: Jack, Paul [mailto:pjack@sfaf.org]
> > > Sent: Friday, June 07, 2002 4:10 PM
> > > To: 'Jakarta Commons Developers List'
> > > Subject: RE: [Collections] ComparableComparator -
> nulls OK
> > >
> > >
> > > I like the idea of having the functionality provided
> by
> > > NullFirstComparator and NullLastComparator, but I
> have an
> > > additional suggestion.
> > >
> > > Currently, all of the classes in the comparators
> subpackage
> > > are simple, and very useful.  However, it seems that
> they'd
> > > most often be used in conjunction with each other;
> typically,
> > > I'd use ReverseComparator with ComparableComparator
> to get
> > > reverse natural ordering, and I'd probably use a
> > > NullSomething comparator with ComparableComparator to
> get
> > > natural ordering that accepts nulls.
> > >
> > > So my suggestion is, can we fold these all into one
> static
> > > utility API?  It would make them much more
> convenient, IMHO.
> > > I'm thinking of something like:
> > >
> > > public class ComparatorUtils {
> > >
> > >     // same as ComparableComparator.getInstance
> > >     public static Comparator NATURAL;
> > >
> > >     public static Comparator nullFirst(Comparator c);
> > >     public static Comparator nullLast(Comparator c);
> > >
> > >     // same as reverseComparator
> > >     public static Comparator reverse(Comparator c);
> > >
> > >     public static Comparator bean(Comparator c,
> String getterName);
> > >     public static Comparator transform(Comparator c,
> Transformer t);
> > >
> > > }
> > >
> > > Also, there are operations involving Comparators that
> I use
> > > frequently that would be nice to have in the API:
> > >
> > >     public static Object min(Object o1, Object o2,
> Comparator c);
> > >     public static Object max(Object o1, Object o2,
> Comparator c);
> > >
> > > which would return the higher or lower of the given
> objects
> > > according to the comparator.
> > >
> > > Any of this make sense?
> > >
> > > -Paul
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Michael A. Smith [mailto:mas@apache.org]
> > > > Sent: Friday, June 07, 2002 1: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:joncrlsn2@yahoo.com]
> > > > > Sent: Friday, June 07, 2002 3:38 PM
> > > > > To: commons-dev@jakarta.apache.org
> > > > > 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
> 
=== message truncated ===


=====
Jonathan Carlson
joncrlsn@users.sf.net
Minneapolis, Minnesota

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message