Re: Can you help me understand this?
"Shawn" <shaw@nospam.com> wrote in message
news:ee8tqp$ud5$1@news.nems.noaa.gov...
Hi,
I was reading the following part from a tutorial. I cannot understand it.
Could you kindly help me understand it? I know the intention is to provide
your own comparator so that your list can be sorted by using it. I am not
clear how to apply the object of Comparator to the list. Can you fill in a
little more code to show me how it works?
Thank you very much.
======================copied from a tutorial======================
This example demonstrates an anonymous class definition for a comparator
that is passed to the sort() method in the Collections class. Assume that
aList is a valid List of data that is to be sorted.
Collections.sort (aList,
new Comparator() { // implements the IF
public int compare (Object o1, Object o2 ) throws ..{
.... implementation for compare()
} // end of compare()
} // end of Comparator implementation
); // closed paren for sort() and end of statement semicolon
I guess the code you want filled in is "implementation for compare()".
Let's say you want to sort instances of the class Person by their last name,
and then by their first name. The code might look something like this
(didn't check it in a compiler, may contain typos):
<code>
class Person {
public String firstName, lastName;
}
new Comparator<Person>() {
public int compare(Person o1, Person o2) {
int lastNameCompareResult = o1.lastName.compareTo(o2.lastName);
if (lastNameCompareResult != 0) {
return lastNameCompareResult;
}
return o1.firstName.compareTo(o1.firstName);
}
}
</code>
if you don't understand how generics in 1.5 work yet, then equivalent code
in 1.4 would look like:
<code>
class Person {
public String firstName, lastName;
}
new Comparator() {
public int compare(Object t1, Object t2) {
Person o1 = (Person)t1;
Person o2 = (Person)t2;
int lastNameCompareResult = o1.lastName.compareTo(o2.lastName);
if (lastNameCompareResult != 0) {
return lastNameCompareResult;
}
return o1.firstName.compareTo(o1.firstName);
}
}
</code>
- Oliver