Comparator : Java Glossary

go to home page C words local find full screen, hide local find menu Google search web for more information on this topic jump to foot of page translate this page with Babelfish 2008-08-04 by Roedy Green ©1996-2009 Canadian Mind Products
index page for letter ⇒ punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all)
Comparator
java.util.Comparator is used to define a special sort order for a class. To implement java.util.Comparator you must write two methods. It typically describes a small delegate object passed to a sort to describe some special sort order. The compare method compares two objects of the class you want to sort. The equals method compares this java.util.Comparator to another to see if they represent the same order. It does not compare two objects of the class you want to sort. Normally you also redefine equals when you implement Comparator even though it is not part of the Comparator interface. There are no generics involved in overriding equals.
public final int compare( Object o1, Object o2 );
public boolean equals( Object obj );
Here is a typical java.util.Comparator.compare routine:
If you are using a java.util.Comparator only once, you might implement it as an anonymous inner class like this:
Collections.sort( myArrayList, new Comparator()
                     {
                     public int compare( Object a, Object b )
                        {
                        return( (String)a ).compareToIgnoreCase( (String) b );
                        }
                     } );
Here is a very general purpose Comparator for sorting rows of a Table (array of arrays or Vector of arrays) where each element is some sort of Object that implements Comparable.

Tips

Descending/Inverse/Reverse Order with reverseOrder

Sorting ascending order means sorting with the small elements first then the big. This is usual ordering. Descending order means sorting with the big elements first then the small.

If you have a Comparator or Comparable of some kind, you can convert it into one that sorts into the reverse of the usual order. E.g. if the original sorts alphabetically, the new one will sort in reverse alphabetical order. Here is how you use it:

If you don’t have a suitable base Comparator, just write an ordinary Comparator from scratch and reverse the operands to each compare inside it, or return - result instead of result.

Comparator Using Generics

You don’t need any casts since the compiler checks that no non-Pair classes ever get inside the ArrayList<Pair>.

Learning More

Sun’s Javadoc on the Comparable class : available:
Note java.lang.Comparable but java. util.Comparator.
Sun’s Javadoc on the Comparator class : available:
Sun’s Javadoc on Collections.reverseOrder() : available:
Sun’s Javadoc on Collections.reverseOrder(Comparator) : available:

CMP homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.58]
You are visitor number 73,459.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/jgloss/comparator.html J:\mindprod\jgloss\comparator.html