java物件比較器和轉殖

2021-07-02 17:47:29 字數 2395 閱讀 9118

一.比較器comparable和comparator

public class mystring ;  

person b=;     

arrays.sort(a);  

for(int i=0;i

system.out.print(a[i]);  

system.out.print("\r\n");  

arrays.sort(b);  

for(int i=0;i

system.out.println(b[i]);  

}  }  

//自定義類  

class person   

}  

複製**

程式執行結果:

我們發現string可以呼叫arrays.sort()函式,而我們自定義的person類報錯,看錯誤的關鍵字 comparable

開啟string原始碼

由此引入比較器comparable,我們下面利用comparable介面來實現person使用arrays.sort()按年齡排序遞增排序。

comparable介面能夠對實現它的類的物件進行排序,主要使用compareto函式來實現排序。compareto函式返回int型別,分別返回-1,0,1對應小於,等於,大於。

把**改為:

public class mystring ;  

person b=;     

arrays.sort(a);  

for(int i=0;i

system.out.print(a[i]);  

system.out.print("\r\n");  

arrays.sort(b);  

for(int i=0;i

system.out.println(b[i]);  

}  }  

//自定義類  

class person implements comparable  

//比較器的比較函式  

/** 

* 如果當前物件小於比較物件,返回-1 

* 如果當前物件等於比較物件,返回0 

* 如果當前物件大於比較物件,返回1 

*/  

@override  

public int compareto(person o)   

//重寫tostring方法  

@override  

public string tostring()   

}  

複製**

為自定義的person實現比較器comparable介面,即可呼叫arrays.sort()進行排序。

另外還有另一種實現方法,實現comparator介面。

public class mystring ;  

person b=;     

arrays.sort(a);  

for(int i=0;i

system.out.print(a[i]);  

system.out.print("\r\n");  

arrays.sort(b,new personcomparator());  

for(int i=0;i

system.out.println(b[i]);  

}  }  

//自定義類  

class person   

@override  

public string tostring()   

}  class personcomparator implements comparator  

}  

複製**

二.物件的轉殖clone

將乙個物件複製乙份,稱作物件的轉殖技術。轉殖物件分為兩步。

1.實現cloneable標記介面

cloneable是乙個標記介面,此介面沒有定義任何方法。只是作為乙個標記給虛擬機器。

2.重寫object的clone方法

//自定義類person實現cloneable介面  

class person implements cloneable   

//重寫object的clone方法  

@override  

protected object clone() throws clonenotsupportedexception  

}  

複製**

轉殖的呼叫:

public static void main(string args) catch (clonenotsupportedexception e)   

}  

複製**

這樣既可以完成對乙個物件的轉殖,當我們要建立一系列類似的物件時,可以考慮使用轉殖技術可以得到更好的效能,比你new建立好一些

java物件比較器和轉殖

一.比較器comparable和comparator public class mystring person b arrays.sort a for int i 0 i程式執行結果 我們發現string可以呼叫arrays.sort 函式,而我們自定義的person類報錯,看錯誤的關鍵字compa...

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...

Java中的物件轉殖

當拷貝乙個變數時,原始變數和拷貝變數引用同乙個物件,當改變乙個物件的例項域的值時,其他的物件相應的也將受到影響。employee em new employee em2 em 如果建立乙個物件的新的copy,它的最初狀態和original一樣,但以後將可以各自改變各自的狀態,那就需要使用clone方...