2018.6.11 集合和泛型的課後練習總結
阿新 • • 發佈:2018-06-11
lec 重復 ati oar 總結 TE [] 運行期 有關
介紹Set接口和List接口的區別 提及 介紹Map接口
Collection表示一組對象,這些對象也稱為collection的元素;一些 collection允許有重復的元素,而另一些則不允許;一些collection是有序的,而另一些則是無序的;JDK中不提供此接口的任何直接實 現,它提供更具體的子接口(如 Set 和 List)實現;Map沒有繼承Collection接口,Map提供key到value的映射;一個Map中不能包含相同key,每個key只能映射一個value;Map接口提供3種集合的視圖,Map的內容可以被當做一組key集合,一組value集合,或者一組key-value映射; List和Set接口自Collection接口,而Map不是繼承的Collection接口 List接口 元素有放入順序,元素可重復 List接口有三個實現類:LinkedList,ArrayList,Vector 基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作
##2.JAVA中Collection和Collections的區別
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
Collection是個java.util下的接口,它是各種集合結構的父接口。
Collection是集合框架中的一個頂層接口,它裏面定義了單列集合的共性方法。
它有兩個常用的子接口,List:對元素都有定義索引。有序的。可以重復元素;Set:不可以重復元素。無序。
2.1 java.util.Collections 是一個包裝類。 這個類不能被實例化
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { public static void main(String args[]) { //註意List是實現Collection接口的 List list = new ArrayList(); int array[] = {5, 1, 3, 4, 2}; for (int i = 0; i < array.length; i++) { list.add(array[i]); } Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(list.get(i)); // 結果:1 2 3 4 5 } } } 具體來看下Collections中的sort方法:(以下代碼摘自Collections類中源碼) public static <T extends Comparable<? super T>> void sort(List<T> list) { Object[] a = list.toArray(); Arrays.sort(a); ListIterator<T> i = list.listIterator(); for (int j=0; j<a.length; j++) { i.next(); i.set((T)a[j]); } }
3.請簡要介紹使用泛型的好處
·泛型簡單易用
·類型安全 泛型的主要目標是實現java的類型安全。 泛型可以使編譯器知道一個對象的限定類型是什麽,這樣編譯器就可以在一個高的程度上驗證這個類型
·消除了強制類型轉換 使得代碼可讀性好,減少了很多出錯的機會
J·ava語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
3.1 泛型的實現原理
泛型的實現是靠類型擦除技術 類型擦除是在編譯期完成的 也就是在編譯期 編譯器會將泛型的類型參數都擦除成它的限定類型,如果沒有則擦除為object類型之後在獲取的時候再強制類型轉換為對應的類型。 在運行期間並沒有泛型的任何信息,因此也沒有優化。
2018.6.11 集合和泛型的課後練習總結