Java泛型和集合

一、泛型之泛型類
    
    1、在jdk1.2之後,Java提供了實現常見數據結構的類,這些實現數據結構的類通常稱爲Java集合框架。在JDK1.5後,Java集合框架開始支持泛型。
        泛型(Generics)是在JDK1.5之後推出的,其主要目的是可以建立具有類型安全的集合框架,如鏈表、散列映射等數據結構。
    2、泛型類:
        可以使用"class 名稱 <泛型列表>"聲明一個類,爲了和普通的類有所區別,這樣聲明的類稱爲泛型類,如:
        class ShowObject <E>
        其中ShowObject是泛型類的名稱,E是其中的泛型類,E並沒有指定是何種數據類型的數據,他可以是任何對象或接口,但不能是基本數據類型。
        ShowObject類可以用泛型E作爲自己的一個成員或方法中的參數,ShowObject.java的代碼如下:
        public class ShowObject<E> {
            public showMess(E b){
                String mess = b.toString(); //範型變量只能調用toString()方法
                System.out.println(mess);
            }}

    3、使用泛型類聲明對象
        泛型類聲明和創建對象時,類名後多了一對"<>",而且必須要使用具體的類型替換"<>"中的泛型。例如:
        ShowObject<A>  showA;
        showA = new ShowObject<A>();

二、泛型之泛型接口
        
    1、可以使用"interface名稱<泛型列表>"聲明一個接口,這樣聲明的接口稱作泛型接口如:
        interface Listen<E>{   void listen(E x); }
       其中,Listen<E>是泛型接口的名稱,E是其中的泛型,泛型類和普通類都可以實現泛型接口,但普通類實現泛型接口時,必須指定泛型接口中泛型列表中的具體類型。

    2、泛型的目的:Java泛型的主要目的是可以建立具有類型安全的數據結構,如鏈表、散列表等數據結構,最重要的一個優點是,在使用這些泛型類建立數據結構時,不必進行強制
        類型轉換,即運行時不進行類型檢查。JDK1.5是支持泛型的編譯器,它將運行時的類型檢查提前到編譯時執行,使代碼更安全。

三、集合之List
    
    1、Java語言的設計者對常用的數據結構和算法做了一些規範(接口)和實現(具體實現接口的類)。所有抽象出來的數據結構和操作(算法)統稱爲Java集合框架(JavaCollectionFramework)。
       Java程序員在具體應用時,不必考慮數據結構和算法實現細節,只需要用這些類創建出來一些對象,然後直接應用就可以了,這樣大大提高了編程效率。
       
       Collection                           Map
       - List                                  -HashMap
        -ArrayList                         -HashTable
        -LinkedList
        -Vector
           -Stack
       - Set
        -HashSet
        -TreeSet
    2、List是有序的Collection,使用這個接口能精確的控制每個元素插入的位置,用戶能夠使用索引來訪問List中的元素,跟數組類似。
       List允許有相同的元素,實現List接口的常用類LinkedList、ArrayList、Vector和Stack。

    3、ArrayList 實現了可變大小的數組,它允許所有元素,包括null。
       每個ArrayList例程都有一個容量(Capacity),用於存儲元素的數組的大小,這個容量可以隨不斷添加新元素而自動增加,當需要插入大量元素時,在插入前可以調用ensureCapacity方法來
       增加ArrayList的容量以提高插入效率。

    4、LinkedList實現了List接口,允許null元素,此外LinkedList提供額外的get、remove、insert方法在LinkedList的首部或尾部,這些操作使LinkedList可被用做堆棧(stack),隊列(queue)或雙向隊列(deque)

四、集合之Set和Map
    
    1、Set不保存重複的元素,因此存入Set的每個元素都必須是唯一的,同時Set接口不保證維護元素的次序。
    2、HashSet 不允許出現重複元素、不保證集合中元素的順序、允許包含值爲null的元素,但最多只能有一個null元素。
    3、java爲數據結構中的映射定義了一個接口java.util.Map,它有四個實現類,分別是HashMap、HashTable、LinkedHashMap和TreeMap,Map主要用於存儲鍵值對,根據鍵得到值,因此不允許鍵重複,但允許值重複。
       Hashmap是一個最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。
       HashMap最多隻允許一條記錄的鍵爲null,允許多條記錄的值爲null。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章