本文用一个小例子来阐述Comparator接口的使用方法。
主要是两个JAVA文件。
SortUtils.java: 实现接口、以及具体使用的例子
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortUtils {
enum SortType {
SORT_TYPE_CASE_SENSITIVE,
SORT_TYPE_CASE_INSENSITIVE
};
private static Comparator<String> caseSensitiveComparator =
new Comparator<String> () {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
};
private static Comparator<String> caseInsensitiveComparator =
new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
};
public static void sort(List<String> values, SortType sortType) {
switch (sortType) {
case SORT_TYPE_CASE_SENSITIVE:
Collections.sort(values, caseSensitiveComparator);
return;
case SORT_TYPE_CASE_INSENSITIVE:
Collections.sort(values, caseInsensitiveComparator);
return;
default:
// Unreachable here
return;
}
}
}
SortTest.java: 对上述代码进行验证的代码
import java.util.ArrayList;
import java.util.List;
public class SortTest {
public static void main(String[] args) {
List<String> values = new ArrayList<String>();
values.add("first");
values.add("second");
values.add("third");
values.add("FIRST");
values.add("SECOND");
values.add("THIRD");
test("case sensitive", values, SortUtils.SortType.SORT_TYPE_CASE_SENSITIVE);
test("case insensitive", values, SortUtils.SortType.SORT_TYPE_CASE_INSENSITIVE);
}
private static void test(String testcaseName, List<String> values, SortUtils.SortType sortType) {
System.out.println(testcaseName);
dump(" before: ", values);
SortUtils.sort(values, sortType);
dump(" after: ", values);
}
private static void dump(String title, List<String> values) {
System.out.print(title);
for (String s : values) {
System.out.print(s);
System.out.print(" ");
}
System.out.println();
}
}
执行结果:
case sensitive
before: first second third FIRST SECOND THIRD
after: FIRST SECOND THIRD first second third
case insensitive
before: FIRST SECOND THIRD first second third
after: FIRST first SECOND second THIRD third