Computer Science
15-111 (Sections A & B), Spring 2007
Class (Recitation) Notes: 01-Mar-2007
Here are some code samples we
developed today in recitation:
1.
Implementing Comparable:
import
java.util.*;
import static java.lang.System.out;
class MyString implements Comparable {
public MyString(String s) { this.s = s;
}
public int compareTo(Object obj) {
MyString that = (MyString) obj;
return this.s.compareTo(that.s);
}
public String toString() {
return "<" + this.s +
">";
}
private String s;
public static void main(String[] args)
{
MyString[] y = { new
MyString("yak"),
new
MyString("bar"),
new
MyString("foo")
};
Arrays.sort(y);
out.println(Arrays.toString(y));
}
}
2.
Implementing Comparator:
import
java.util.*;
import static java.lang.System.out;
class MyStringComparator implements Comparator {
public MyStringComparator(boolean
forwards, boolean ignoreCase) {
this.forwards = forwards;
this.ignoreCase = ignoreCase;
}
private boolean forwards, ignoreCase;
public int compare(Object obj1, Object
obj2) {
String s1 = (String) obj1;
String s2 = (String) obj2;
if (ignoreCase) {
s1 = s1.toUpperCase();
s2 = s2.toUpperCase();
}
if (forwards)
return s1.compareTo(s2);
else
return -s1.compareTo(s2);
}
public static void main(String[] args)
{
String[] z = { "yak",
"bar", "CAR", "foo" };
// MyStringComparator(boolean
forwards, boolean ignoreCase)
Arrays.sort(z, new
MyStringComparator(true,false));
out.println(Arrays.toString(z));
Arrays.sort(z, new
MyStringComparator(true,true));
out.println(Arrays.toString(z));
Arrays.sort(z, new
MyStringComparator(false,false));
out.println(Arrays.toString(z));
Arrays.sort(z, new
MyStringComparator(false,true));
out.println(Arrays.toString(z));
}
}
3.
A thought on Comparator as a Class
rather than an Interface
abstract
class AbstractComparator implements Comparator {
abstract public int compare(Object obj1, Object obj2);
}
This allows you to
replace "implements
Comparator" with
"extends
AbstractComparator"
in most cases.
Think about it!