首页 / 软件开发 / JAVA / 深入理解Collections API
深入理解Collections API2010-12-13一个 List l 可能被做如下排序:Collections.sort(l);如果这个 list 由 String 元素所组成, 那么它将按词典排序法(按字母顺序)进行排序; 如果它是由 Date 元素所组成, 那么它将按年代顺序来排序。Java 怎么会知道该怎么做呢? 这一定是个魔术! 其实不然。实际上, String 和 Date 均实现了Comparable接口。Comparable 接口为一个类提供一个自然排序( natural ordering), 它允许那个类的对象被自动排序。下表列出了实现了Comparable 的JDK类:类 自然排序Byte 带符号的数字排序Character 不带符号的数字排序Long 带符号的数字排序Integer 带符号的数字排序Short 带符号的数字排序Double 带符号的数字排序Float 带符号的数字排序BigInteger 带符号的数字排序BigDecimal 带符号的数字排序File 依赖系统的按路径名字母顺序排序String 按字母顺序排序Date 按年代顺序排序CollationKey 特定字符集按字母顺序排序如果你要为一个其元素没有实现 Comparable的列表排序,Collections.sort(list) 将扔出一个 ClassCastException。类似的,如果你要为一个其元素没有作相互比较的列表进行排序, Collections.sort 将扔出一个 ClassCastException. 能够被相互比较的元素被称作 mutually comparable(可相互比较的)。虽然不同类型的元素有可能被相互比较,但以上列出的任何JDK类型都不允许在类之间的比较 (inter-class comparison)。如果你只是要为可比较的元素的列表进行排序,或为它们创建排序的对象集, 则这就是你实际需要了解的全部有关 Comparable 接口的内容。如果你要实现你自己的 Comparable 类型,则下一节将会引起你的兴趣。编写你自己的 Comparable 类型Comparable 接口由一个单一的方法构成:public interface Comparable {public int compareTo(Object o);}