兩者之間的區別:
Comparator接口在java.util包下,用於提供比較規則,通常帶有Arrays.sort(對象數組,比較規則);or collections . sort(set,比較規則);壹起使用。前面的數組或集合根據以下比較規則進行排序。比較規則是比較器接口類型的對象。妳可以創建壹個類來實現接口,重寫compare方法,在方法體中自定義比較規則,價格和權重的點擊率是可以接受的。比較參數中傳遞的兩個對象,並根據返回值o 1 & gt;O1默認升序。
java.lang包下的Comparable接口實現了compareTo方法來對對象進行排序,該方法只有壹個參數。
公共整數比較(對象對象)
對象。對象==0對象==對象
對象。obj ==正對象》obj
對象。obj ==否定對象《obj
總而言之:
比較器通常用於提供比較規則,需要壹起使用。
Comparable:要比較的對象直接實現此接口。
示例:使用比較器接口
包shwg.action
導入Java . util . arrays;
導入Java . util . comparator;
//按字符串長度比較對象大小
公開課演示{
公共靜態void main(String[] args) {
string【】names = {“Tom“、“Jerry“、“Andy“、“Lee“};
arrays . sort(names,new ByLength());
system . out . println(arrays . tostring(names));
}
}
class ByLength實現比較器& lt字符串& gt{
//只需比較兩個隨機對象o1 o2。如果Compare方法返回正數,
//將按升序排列(長度從小到大)
public int compare(字符串o1,字符串O2 ){
int r = o 1 . length()-O2 . length();
if(r = = 0 ){
//如果長度相等,則根據字符串首字母的大小比例添加符號,以便首字母按字典順序排列。
return-(o 1 . charat(0)-O2 . charat(0));
}
return r;
}
}
示例2:使用可比接口
包shwg.action
導入Java . util . collections;
導入Java . util . linked list;
導入Java . util . list;
//註意:只要實現了Comparable接口中的compareTo方法,就會自動調用。
公共類名實現可比的{
私有字符串firstName,lastName
公共名稱(字符串名字,字符串姓氏){
this . first name = first name;
this.lastName =姓氏;
}
public String toString(){ return first name+““+last name;}
//比較相同類型的對象是有意義的。您可以使用通用
public int compare to(Object o ){
Name a =(Name)o;
//lastName是字符串類型,Comparable接口已經實現,可以直接調用compareTo方法。
//比較時,從第壹個字母開始的字母按照ASCII值的大小排序。
int last CMP = last name . compare to(a . last name);
//姓氏相同。比較firstName並返回整數值。
返回lastCmp!=0 ?last CMP:first name . compare to(a . first name);
}
//測試
公共靜態void main(String[] args) {
list l = new linked list();
l.add(新名字(“Karl”、“M”));
l.add(新名字(“史蒂文”、“李”);
l.add(新名稱(“Jhon“,“O“);
collections . sort(l);
system . out . println(l);
}
}
我希望逐字采用它,妳可以在程序中運行它進行比較。