深入理解Collections API
http://tech.ddvip.com 2006年11月24日 社区交流
本文详细介绍深入理解Collections API
import java.util.*;
class NameSort {
public static void main(String args[]) {
Name n[] = {
new Name("John", "Lennon"),
new Name("Karl", "Marx"),
new Name("Groucho", "Marx"),
new Name("Oscar", "Grouch")
};
List l = Arrays.asList(n);
Collections.sort(l);
System.out.println(l);
}
}如果你运行这个程序,以下是它所打印的结果:
[Oscar Grouch, John Lennon, Groucho Marx, Karl Marx]对 compareTo 方法的行为有四个限制,我们现在不作一一讨论,因为它们的技术性太强,并且十分枯燥,我们最好将其留在API文本中。但是,所有实现 Comparable 的类都必须接受这些限制的约束,这一点是确实重要的。因此,如果你要编写一个实现Comparable 的类,请读那些有关 Comparable 的文本吧。要试图为违反了那些限制的对象的列表进行排序可能引发不可预知的行为。从技术上讲,这些限制保证了自然排序是实现它的类的对象的部分顺序(partial order)。保证排序被很好地定义是十分必要的。
比较器(Comparators)
好,到目前为止,你已经了解了自然排序。那么,如果要对某些对象不按自然顺序进行排序,又会怎么样呢?或者,如果你要为某些不实现 Comparable 的对象进行排序呢?为做这些事情,你需要提供一个Comparator。 Comparator 实际就是一个封装了排序的对象。与 Comparable 接口类似,Comparator 接口由一个的方法构成:
public interface Comparator { int compare(Object o1, Object o2);}
责编:豆豆技术应用
正在加载评论...