1. 程式人生 > >《資料結構與演算法》之泛型——使用介面型別表示泛型

《資料結構與演算法》之泛型——使用介面型別表示泛型

如:考慮再由一些項組成的陣列中找出最大項的問題。基本的程式碼是型別無關的,但是它需要一種能力來比較任意兩個物件。因此,不能直接找出Object的陣列中的最大元素——我們需要更多的資訊。最簡單的方法就是找出Comparable的陣列中的最大元。要確定順序,可以使用compareTo方法,它對所有的Comparable都必然是現成可用的。

1、只有實現Comparable介面的那些物件才能夠作為Comparable陣列的元素被傳遞。僅有compareTo方法但並未宣稱實現Comparable介面的物件不是Comparable的,它不具備必需的IS-A關係。

2、如果Comparable陣列有兩個不相容的物件(例如:String和Shape),那麼CompareTo方法將丟擲異常ClassCastException。

3、基本型別不能作為Comparable傳遞,但是包裝類可以,因為它們實現了Comparable介面。

4、介面究竟是不是標準的庫介面倒不是必需的。

public class FindMaxDemo {

	public static void main(String[] args) {
		String[] st={"Joe","Bob","Bill"};
		System.out.println(findMax(st));

	}
	
	public static Comparable findMax(Comparable[] arr){
		int maxIndex=0;
		for(int i=0;i<arr.length;i++){
			if(arr[i].compareTo(arr[maxIndex])>0){
				maxIndex=i;
			}
		}
		return arr[maxIndex];
	}
}