Re: verbose sort

Discussion in 'Java' started by Volker Borchert, Aug 4, 2012.

  1. From: "Volker Borchert" <volker.borchert@1:261/38.remove-yy0-this>

    From: (Volker Borchert)

    Eric Sosman wrote:
    > To: bob smith
    > From: Eric Sosman <>
    >
    > On 8/2/2012 11:37 AM, bob smith wrote:
    > > I have some code that sorts a list like so:
    > >
    > > Vector<String> my_list = new Vector<String>();
    > >
    > >
    > > Comparator<String> c = new Comparator<String>() {
    > > @Override
    > > public int compare(String object1, String object2) {
    > > if (object1 == null)
    > > return -1;
    > > if (object2 == null)
    > > return 1;
    > > object1 = object1.toLowerCase();
    > > object2 = object2.toLowerCase();
    > > return object1.compareTo(object2);
    > > };
    > > };
    > >
    > > Collections.sort(my_list, c);
    > >
    > >
    > > This seems like a lot of code for such a common operation. Is there a more

    > succinct way of doing this?
    >
    > Consider using compareToIgnoreCase(). Also, think about what
    > happens when two null's are compared: You should return zero rather than
    > declaring one of them "less than" the other, because otherwise your

    comparator
    > is inconsistent (you can have A<B, B<C, but C<A).
    >
    > public int compare(String s1, String s2) {
    > if (s1 == null)
    > return s2 == null ? 0 : -1;
    > return s2 == null ? +1 : s1.compareToIgnoreCase(s2);
    > }


    I'd do it as a fastpath and GoF Decorator

    public final class NullFirstComparator<T> implements Comparator<T> {
    @NonNull
    private final Comparator<T> delegate;

    public NullFirstComparator(@NonNull final Comparator<T> delegate) {
    this.delegate = delegate;
    }

    public int compare(final T t1, final T t2) {
    if (t1 == t2) {
    return 0;
    } else if (t1 == null) {
    return -1;
    } else if (t2 == null) {
    return 1;
    } else {
    return delegate.compare(t1, t2);
    }
    }
    }

    Collections.sort(my_list, new NullFirstComparator<String>(String.CASE_INSENSITI
    VE_ORDER));

    --

    "I'm a doctor, not a mechanic." Dr Leonard McCoy <>
    "I'm a mechanic, not a doctor." Volker Borchert <>

    -+- BBBS/Li6 v4.10 Dada-1
    + Origin: Prism bbs (1:261/38)
    -+- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Volker Borchert, Aug 4, 2012
    #1
    1. Advertising

  2. To: Volker Borchert
    From: (Volker Borchert)

    Volker Borchert wrote:
    > --- BBBS/Li6 v4.10 Dada-1
    > * Origin: Prism bbs (1:261/38)
    > --- Synchronet 3.16a-Win32 NewsLink 1.98
    > Time Warp of the Future BBS - telnet://time.synchro.net:24


    Currently it's only an annoying echo. Stop it. Now.

    --

    "I'm a doctor, not a mechanic." Dr Leonard McCoy <>
    "I'm a mechanic, not a doctor." Volker Borchert <>

    --- BBBS/Li6 v4.10 Dada-1
    * Origin: Prism bbs (1:261/38)
    --- Synchronet 3.16a-Win32 NewsLink 1.98
    Time Warp of the Future BBS - telnet://time.synchro.net:24
     
    Volker Borchert, Aug 4, 2012
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. bob smith

    verbose sort

    bob smith, Aug 2, 2012, in forum: Java
    Replies:
    8
    Views:
    224
    Roedy Green
    Aug 3, 2012
  2. Eric Sosman

    Re: verbose sort

    Eric Sosman, Aug 2, 2012, in forum: Java
    Replies:
    0
    Views:
    186
    Eric Sosman
    Aug 2, 2012
  3. bob smith

    verbose sort

    bob smith, Aug 2, 2012, in forum: Java
    Replies:
    8
    Views:
    255
    Roedy Green
    Aug 3, 2012
  4. Volker Borchert

    Re: verbose sort

    Volker Borchert, Aug 3, 2012, in forum: Java
    Replies:
    0
    Views:
    181
    Volker Borchert
    Aug 3, 2012
  5. Daniel Pitts

    Re: verbose sort

    Daniel Pitts, Aug 4, 2012, in forum: Java
    Replies:
    0
    Views:
    133
    Daniel Pitts
    Aug 4, 2012
Loading...

Share This Page