一.比較器comparable和comparator
public class mystring ;
person b=;
arrays.sort(a);
for(int i=0;i程式執行結果:
我們發現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
//比較器的比較函式
/*** 如果當前物件小於比較物件,返回-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
}
二.物件的轉殖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 system.out.print a i system.out.print r n arrays.sort b for int ...
JAVA 物件轉殖clone
有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...
Java中的物件轉殖
當拷貝乙個變數時,原始變數和拷貝變數引用同乙個物件,當改變乙個物件的例項域的值時,其他的物件相應的也將受到影響。employee em new employee em2 em 如果建立乙個物件的新的copy,它的最初狀態和original一樣,但以後將可以各自改變各自的狀態,那就需要使用clone方...