Sorting the Data
To sort the data, we first need
to add a few more things to the
ReportHandler class:
package com.mycompany.expense;
import java.util.Collections;
import java.util.Comparator;
...
public class ReportHandler {
...
private static final Comparator ASC_TITLE_COMPARATOR = new Comparator( ) {
public int compare(Object o1, Object o2) {
String s1 = ((Report) o1).getTitle( );
String s2 = ((Report) o2).getTitle( );
return s1.compareTo(s2);
}
};
private static final Comparator DESC_TITLE_COMPARATOR = new Comparator( ) {
public int compare(Object o1, Object o2) {
String s1 = ((Report) o1).getTitle( );
String s2 = ((Report) o2).getTitle( );
return s2.compareTo(s1);
}
};
...A java.util.Comparator
instance
compares values, for instance, when sorting a collection. Its
compare() method is called
with the two objects to compare and returns
a negative value if the first is less than the second, zero if they
are equal, or a positive value if the first is greater than the
second.
I create two static Comparator instances for each
column: one for ascending order and one for descending order. I show
you only the ones for the Title column here, but the others are
identical (with the exception of which Report
property they compare).
To sort the reports list, I add a sortReports()
method:
private void sortReports(List reports) { switch (sortBy) { case SORT_BY_TITLE: Collections.sort(reports, ascending ? ASC_TITLE_COMPARATOR : DESC_TITLE_COMPARATOR); break; case SORT_BY_OWNER: Collections.sort(reports, ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access