I too like the ComparatorUtils concept outlined below. However, we might
want to consider whether the method names are nullFirst(Comparator) or
nullFirstComparator(Comparator) etc. I raise this because PredicateUtils
uses the latter at the moment, and it would be nice to be consistent (we
could change PredicateUtils if required).
Stephen
----- Original Message -----
From: Jack, Paul <[EMAIL PROTECTED]>
To: 'Jakarta Commons Developers List' <[EMAIL PROTECTED]>
Sent: Friday, June 07, 2002 9:09 PM
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:[EMAIL PROTECTED]]
> > 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:[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:[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]>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>