CS 1713-001 Introduction to Computer Science
Spring 2001 -- Lectures for Week 9

Week's Objectives:
First consider the compareTo method provided by the String class:

// StringCompare.java: compare Strings
public class StringCompare {
   public static void main (String[] args) {
      String s1 = new String("Aardvark");
      String s2 = new String("Aaron");
      String s3 = new String("Aragon");
      System.out.println("s1.compareTo(s1): " + s1.compareTo(s1));
      System.out.println("s1.compareTo(s2): " + s1.compareTo(s2));
      System.out.println("s1.compareTo(s3): " + s1.compareTo(s3));
      System.out.println("s2.compareTo(s1): " + s2.compareTo(s1));
      System.out.println("s2.compareTo(s2): " + s2.compareTo(s2));
      System.out.println("s2.compareTo(s3): " + s2.compareTo(s3));
      System.out.println("s3.compareTo(s1): " + s3.compareTo(s1));
      System.out.println("s3.compareTo(s2): " + s3.compareTo(s2));
      System.out.println("s3.compareTo(s3): " + s3.compareTo(s3));
   }
} 
    
/* Output is:

s1.compareTo(s1): 0
s1.compareTo(s2): -11
s1.compareTo(s3): -17
s2.compareTo(s1): 11
s2.compareTo(s2): 0
s2.compareTo(s3): -17
s3.compareTo(s1): 17
s3.compareTo(s2): 17
s3.compareTo(s3): 0

*/
 
Notice that (It doesn't matter what the negative or positive number are. Above, they are the weird + or - 11 or 17, but they could be anything.)


The next example shows how to compare strings in reverse order, using our own class ReverseString and reimplementing the compareTo method.

First is the class StringCompare2 that tests this out:


// StringCompare2.java: compare Strings in reverse order
public class StringCompare2 {
   public static void main (String[] args) {
      ReverseString s1 = new ReverseString("Aardvark");
      ReverseString s2 = new ReverseString("Aaron");
      ReverseString s3 = new ReverseString("Aragon");
      System.out.println("s1.compareTo(s1): " + s1.compareTo(s1));
      System.out.println("s1.compareTo(s2): " + s1.compareTo(s2));
      System.out.println("s1.compareTo(s3): " + s1.compareTo(s3));
      System.out.println("s2.compareTo(s1): " + s2.compareTo(s1));
      System.out.println("s2.compareTo(s2): " + s2.compareTo(s2));
      System.out.println("s2.compareTo(s3): " + s2.compareTo(s3));
      System.out.println("s3.compareTo(s1): " + s3.compareTo(s1));
      System.out.println("s3.compareTo(s2): " + s3.compareTo(s2));
      System.out.println("s3.compareTo(s3): " + s3.compareTo(s3));
   }

} 
    
/* Output is: (the reverse of the normal compareTo for strings)

s1.compareTo(s1): 0
s1.compareTo(s2): 1
s1.compareTo(s3): 1
s2.compareTo(s1): -1
s2.compareTo(s2): 0
s2.compareTo(s3): 1
s3.compareTo(s1): -1
s3.compareTo(s2): -1
s3.compareTo(s3): 0

*/
Then comes the class ReverseString that implements strings in reverse order:

// ReverseString.java: compare Strings in reverse order
public class ReverseString implements Comparable {
   String internal;
   public ReverseString(String s) {
      internal = s;
   }
   public int compareTo(Object t) {
      if (internal.compareTo(((ReverseString)t).internal) < 0) return 1;
      else if (internal.compareTo(((ReverseString)t).internal) > 0) return -1;
      else return 0;
   }
} 
The interface that is being implemented above is the following:

public interface Comparable
{
   int compareTo(Object obj);
}


Revision date: 2001-03-18. (Please use ISO 8601, the International Standard.)