Java中提供了兩個(gè)用于比較對(duì)象的方法:compare和compareTo。
compare 方法
public static>T max(T obj1, T obj2) { return (obj1.compareTo(obj2) >= 0 ? obj1 : obj2); }
比較兩個(gè)對(duì)象的大小,通常用于排序。compare 方法的返回值為整數(shù)類型,具體說明如下:
- 如果 obj1 大于 obj2,則返回一個(gè)正整數(shù)。
- 如果 obj1 等于 obj2,則返回 0。
- 如果 obj1 小于 obj2,則返回一個(gè)負(fù)整數(shù)。
需要注意的是,compare 方法只能用于實(shí)現(xiàn)了 Comparable 接口的類。
compareTo 方法
public interface Comparable{ public int compareTo(T o); }
同樣是比較兩個(gè)對(duì)象的大小,但是 compareTo 方法定義在 Comparable 接口中,可以用于所有實(shí)現(xiàn)了該接口的類。
compareTo 方法的返回值為整數(shù)類型,具體說明如下:
- 如果當(dāng)前對(duì)象大于參數(shù)對(duì)象,則返回一個(gè)正整數(shù)。
- 如果當(dāng)前對(duì)象等于參數(shù)對(duì)象,則返回 0。
- 如果當(dāng)前對(duì)象小于參數(shù)對(duì)象,則返回一個(gè)負(fù)整數(shù)。
需要注意的是,當(dāng)兩個(gè)對(duì)象不具有可比性時(shí),應(yīng)該拋出 ClassCastException 異常。
總結(jié)來說,compare 方法通常用于對(duì)單一字段進(jìn)行排序,而 compareTo 方法通常用于對(duì)多個(gè)字段進(jìn)行排序,并可以用于所有實(shí)現(xiàn)了 Comparable 接口的類。