Natural sorting order for alphanumeric fields

Discussion in 'Java' started by Paul, Sep 14, 2004.

  1. Paul

    Paul Guest

    I have a field that contains both numeric and alphanumeric entries, so
    e.g. when I do an 'order by' in sql I would get the following order

    1.2
    1.25
    1.3
    3
    50
    6
    ALMERA
    FOCUS

    But in this case , the 6 should be above the 50, but the order by
    looks at the first digit only.

    To get around this, I tried two implemetations of the comparator class
    that I found on the web
    http://pierre-luc.paour.9online.fr/NaturalOrderComparator.java and
    http://www.davekoelle.com/alphanum.jsp. These seemed to work well
    EXCEPT for the cases containing decimal points
    i.e. in the following order
    1.2
    1.3
    1.25

    Does anyone know of a sort that gets around this problem.
     
    Paul, Sep 14, 2004
    #1
    1. Advertisements

  2. Paul

    Rogan Dawes Guest

    How about something like:

    public class Sorter implements Comparator {

    int compare(Object o1, Object o2) {

    if (o1 instanceof Number && o2 instanceof Number) {
    return ((Number)o1).compareTo(o2);
    } else {
    return o1.toString().compareTo(o2.toString());
    }

    }

    }

    This assumes that your objects are the right type. If they are not, you
    need to determine whether they are numbers or not, before comparing them.

    Rogan
     
    Rogan Dawes, Sep 14, 2004
    #2
    1. Advertisements

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.