在Java中,给对象数据排序有两种方法。
方法一:实现Comparable接口
在实例类中定义compareTo方法。
String类就实现了Comparable接口。
方法二:实现Comparator接口,将数组和一个比较器(comparator)作为参数
在实例类中定义compare方法。
String中一定已经使用了第一种方式(按照字母表顺序排序)。如果还想按照字符长度进行排序,就要实现comparator。
如:
public class ArraySortTest {
public static void main(String[] args) {
sortStringArrayTest();
}
public static void sortStringArrayTest(){
Comparator<String> comp = new LengthComparator();
String[] friends = {"Peter", "Paul", "Mary"};
System.out.println(Arrays.toString(friends));
Arrays.sort(friends, comp);
System.out.println(Arrays.toString(friends));
// 这个compare方法要在比较器对象上调用,而不是在字符串本身上调用
if(comp.compare(friends[1], friends[2]) > 0){
System.out.println("friends[1] is bigger.");
}
}
}
class LengthComparator implements Comparator<String>{
@Override
public int compare(String first, String second) {
return first.length() - second.length();
}
}