<< Chapter < Page | Chapter >> Page > |
Revised: Fri Apr 08 10:52:12 CDT 2016
This page is included in the following Books:
This module is one of a series of modules designed to teach you about Object-Oriented Programming (OOP) in general and the Java Collectionsframework in particular.
This module shows you how to use the sort method of the Collections class along with a Comparator object to sort the contents of a List into reverse natural order.
In addition to studying these modules, I strongly recommend that you study the Collections Trail in Oracle's Java Tutorials . The modules in this collection are intended to supplement and not to replace those tutorials.
I recommend that you open another copy of this module in a separate browser window and use the following links to easily find and view the listings while you are reading about them.
In this module, I will teach you how to use the sort method of the Collections class along with a Comparator object to sort the contents of a List into reverse natural order .
The methodology that I will teach you is completely general, and can be used to sort a list in a wide variety of ways, depending on how you define the compare method of a Comparator object.
Furthermore, the same sort method and the same Comparator object can be used to sort any implementation of a list, so long as the listproperly implements the List interface.
The code in this series of modules is written with no thought given to Generics . As a result, if you copy and compile the code, you will probably get warnings about unchecked or unsafe operations .
While you will ultimately need to understand how to use Generics, that is a very complex topic. An understanding of Generics is beyond the scope of thiscourse. Therefore, for purposes of this course, you can simply ignore those warnings.
Let's begin with a quiz to test your prior knowledge of the Collections Framework.
What output is produced by the program shown in Listing 1 ?
Listing 1 . The program named Comparator06 . |
---|
//File Comparator06.java
//Copyright 2001, R.G.Baldwinimport java.util.*;
import java.io.Serializable;public class Comparator06{
public static void main(String args[]){
new Worker().doIt();}//end main()
}//end class Comparator06class Worker{
public void doIt(){Iterator iter;
Collection ref;ref = new LinkedList();
Populator.fillIt(ref);Collections.sort((List)ref, new TheComparator());
iter = ref.iterator();while(iter.hasNext()){
System.out.print(iter.next() + " ");}//end while loop
System.out.println();}//end doIt()
}// end class Workerclass Populator{
public static void fillIt(Collection ref){ref.add("Joe");
ref.add("Bill");ref.add("Tom");
ref.add("JOE");ref.add("BILL");
ref.add("TOM");}//end fillIt()
}//end class Populatorclass TheComparator implements Comparator,Serializable{
public int compare(Object o1,Object o2){if(!(o1 instanceof String))
throw new ClassCastException();if(!(o2 instanceof String))
throw new ClassCastException();//Do a comparison
int result = ((String)o1).compareTo(((String)o2));return result*(-1);
}//end compare()}//end class TheComparator |
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?