一、泛型之泛型類
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。