Java中对于对象的比较有两个接口,Comparable和Comparator。
对于一个实现了Comparable接口的对象,例如String类。 String类的两个对象进行比较时, 如果其中一个是另外一个起始开始的字串,返回长度差, 否则返回第一个不相等的unicode差。但如果在一个集合里需要对String类对象根据字符串长度进行排序,就需要在这个集合里面指定比较器**Comparator**, 具体见下面代码。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* 比较Comparable和Comparator的用法
* @author zerods
*
*/
public class StringCompareDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("abcd");
list.add("abc");
list.add("def");
//使用匿名类进行Comparator对象的传递,再进行排序
Collections.sort(list, new Comparator(){
@Override
public int compare(Object o1, Object o2) {
return ((String)o1).length() - ((String)o2).length();
}});
System.out.println(list);
}
}
输出结果是:
[a, abc, def, abcd]
而直接用Collections.sort(list)的结果是:
[a, abc, abcd, def]