一、比較器
1. Comparable
compareTo(T o)
只能定義一種比較大小的規(guī)則吱窝,如果排序的時候想按照其他的方式排序,那么就不可以了
必須要有比較的對象的類型實現(xiàn)
如果沒有實現(xiàn)比較器接口Comparable兴使,就調(diào)用sort方法排序 會發(fā)生ClassCastException
示例——學(xué)生類中有屬性:名稱和年齡 要求調(diào)用Arrays.sort方法對學(xué)生數(shù)組中的信息按照年齡排序輸出
2. Comparator
compare(T o1,To2)
自定義比較器,必須單獨定義一個類實現(xiàn)励幼,不用比較的對象的類型進行實現(xiàn)赏淌,可以針對相同的類型
定義多個比較器類,可以有多種比較規(guī)則
1)定義實現(xiàn)類實現(xiàn)Comparator接口重寫
2)以調(diào)用帶Comparator類型參數(shù)的sort方法俺孙,生成匿名內(nèi)部類
二睛榄、泛型
1.泛型的概念
泛型:寬泛的類型 編寫的時候不去定義類型场靴,在使用的時候港准,再去定義類型
泛型能夠?qū)?shù)據(jù)類型作為一種參數(shù)傳遞浅缸,實現(xiàn)了類型參數(shù)化,是在jdk1.5引入的蚌父,它具備三個特點:
1)泛型能夠?qū)?shù)據(jù)類型作為一種參數(shù)傳遞毛萌,實現(xiàn)了類型參數(shù)化阁将,
2)在編譯的時候檢查類型安全做盅,最大程度的防止運行期間的類型轉(zhuǎn)換異常
3)類型轉(zhuǎn)換為自動和隱式的
2狸演、泛型類
示例一:
示例二:
示例三:
在Java中满哪,使用E表示集合的元素類型劝篷;K和V分別表示鍵與值的類型;T(需要的時候還可以用U和S等)
表示任意類型像鸡。
也可以聲明多個泛型參數(shù)
靜態(tài)屬性和靜態(tài)方法中不能使用類中聲明的泛型
原因只估,靜態(tài)屬性和方法是在類加載時要確定類型着绷,
泛型是在聲明對象并實例化時確定荠医,所以在靜態(tài)屬性和方法不能使用泛型
基本數(shù)據(jù)類型不能作為泛型
3.泛型接口
1彬向、聲明語法
public interface A<T> { public void test(T t);}
2、傳遞泛型參數(shù)方式
1)在實現(xiàn)類中確定傳遞泛型參數(shù)方式紧显,在不同的實現(xiàn)類中可以確定不同的類型
如果在實現(xiàn)類中不指定泛型有什么樣的問題缕棵,可能會產(chǎn)生不安全的類型轉(zhuǎn)換
2)在實現(xiàn)類中確定招驴,實現(xiàn)類聲明為泛型類的
3)實現(xiàn)類和接口中都不明確泛型