Java Reference
In-Depth Information
Display 13.5 Sorting Method for Array of Comparable (part 2 of 2)
40
/**
41
Precondition: i and j are legal indices for the array a.
42
Postcondition: Values of a[i] and a[j] have been interchanged.
43
*/
44
private static void interchange( int i, int j, Comparable[] a)
45
{
46
Comparable temp;
47
temp = a[i];
48
a[i] = a[j];
49
a[j] = temp; //original value of a[i]
50
}
51
}
EXAMPLE: (continued)
Display 13.6 shows a demonstration of using the sorting method given in Display
13.5. To understand why the demonstration works, you need to be aware of the fact
that both of the classes Double and String implement the Comparable interface.
If you were to check the full documentation for the class Double you would see that
Double implements the Comparable interface and so has a compareTo method. More-
over, for objects o1 and o2 of Double ,
o1.compareTo(o2) < 0 //o1 "comes before" o2
means the same thing as
o1.doubleValue() < o2.doubleValue()
So, the implementation of the Comparable interface for the class Double is really just the
ordinary less-than relationship on the double values corresponding to the Double objects.
Similarly, if you were to check the full documentation for the class String , you
would see that String implements the Comparable interface and so has a compareTo
method. Moreover, the implementation of the compareTo method for the class String
is really just the ordinary lexicographic relationship on the strings.
This Programming Example used the standard library classes Double and String for
the base type of the array. You can do the same thing with arrays whose base class is a
class you defined, so long as the class implements the Comparable interface (including
the standard semantics, which we discussed earlier).
This Programming Example does point out one restriction on interfaces. They can
only apply to classes. A primitive type cannot implement an interface. So, in Display
13.6 we could not sort an array with base type double using the sorting method for an
array of Comparable . We had to settle for sorting an array with base type Double . This
is a good example of using a wrapper class with its “wrapper class personality.”
 
Search WWH ::




Custom Search