Goal: Sort any type of data.
Method: Using “Call back”.
- Client pass array of objects to sort() function.
- The sort() function calls back object’s compareTo() method
(图注:不同层面的行为)
Client: Sort() function 的直接使用者,只需要传入需要排序的object[].
Comparable interface: built in to Java 的 interface, 其中只有一个compareTo() function,可以被implement,从而使object拥有和指定 another object进行对比的能力。被implement后的compareTo函数:less than (return -1); equal to (return 0); greater than (return 1).
Object implementation: 某个具体的Object 对 Comparable 进行 implementation, 从而override Comparable中的compareTo() function, 使object拥有和指定 another object进行对比的能力。实现的规则是:less than (return -1); equal to (return 0); greater than (return 1).
Java中有一些 build-in comparable types: Integer, Double, String, Date, File, ….
一个 Date data type implements the Comparable interface 的例子:
(图注:Date data type implements the Comparable interface.)
Sort implementation: 由于object 已经有了可以互相compare的能力,因此可以对sort() function进行完善。
两个很有用的helper function:compares and exchanges。
(图注:for loop: object[] 中的每个元素和之后所有元素对比,找最小的元素,和此元素换位置。)
最后用一个Test() function测试sort完后的object[] 是否符合sort要求: