Comparable means that two items in a class can be compared (less than,
equal to, greater than). It is similar to the Ord typeclass in Haskell.
Comparable is an interface. You implement it. It is a template, so
you put the class you are able to compare to in angle brackets
afterwards. I expect this to be the same class as the one that is
implementing the Comparable interface.
public class Whatever implements Comparable<Thing> {
public int compareTo (Thing other) {
// ...
}
}The compareTo function gives an integer that indicates whether
this is greater than other.
this < other. This could be read “this comes before other”.this = otherthis > other| a | b | a.compareTo(b) | meaning | inquality |
|---|---|---|---|---|
| 10 | 20 | -10 | a is before b | < |
| 30 | 17 | 13 | a is after b | > |
| 20 | 20 | 0 | a is the same as b | = |
| “can” | “ask” | 2 | a is after b | > |
| “dang” | “ghost” | -3 | a is before b | < |
| “bo” | “boat” | -1 | a is before b | < |
| “same” | “same” | 0 | a is the same as b | = |
The Comparable interface does not require any particular number be returned from the compareTo function. Any positive result indicates that the left (this) argument is greater than the right (other) argument.
The Drow class holds a String, but when you compare two Drow
instances you get the opposite answer from comparing two strings. Example:
Drow a = new Drow("cat");
Drow b = new Drow("dog");
int cmp = a.compareTo(b);
// cmp is positive, but would be negative for StringsWrite the Drow class, including any instance variables,
constructor, and compareTo method.
EBO. The class EBO is like Integer except all evens appear
before any odd number in the ordering created by compareTo.
Examples:
| a | b | a.compareTo(b) | a interpretation b |
|---|---|---|---|
| 2 | 4 | -2 | is before |
| 9 | 3 | 6 | is after |
| 2 | 9 | -7 | is before |
| 2 | -3 | -1 (any neg) | is before |
| 3 | 8 | +1 (any pos) | is after |
| 5 | 10 | +1 (any pos) | is after |
The constructor is of the form new EBO(7).
The class Pt contains an (x,y) coordinate pair. The ordering of Pt is given by first comparing the x’s and then, if they are equal, comparing the y’s.
Examples:
| a | b | a.compareTo(b) | a interpretation b |
|---|---|---|---|
| (20,50) | (20,80) | -30 | is before |
| (10,5) | (10,2) | 3 | is after |
| (10,30) | (31,19) | -21 | is before |
Write a class header, instance variables, constructor, and compareTo method.