一个 list l 可能被做如下排序:
【程序编程相关:阿尔卡特获山西移动2900万美元网络增容】 【推荐阅读:IBM提供2万美元折扣 与微软争企业电邮】collections.sort(l); 【扩展信息:中国电信2007年停建PSTN 全面采用】如果这个 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); ... 下一页