1. 程式人生 > >2018.6.11 集合和泛型的課後練習總結

2018.6.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 集合和泛型的課後練習總結