ArrayList是最基本最可靠的容器,使用ArrayList相當簡單,創建一個實例,用add()插入對象,然後用get()訪問對象,此時需要使用索引,即get(i)。ArrayList兩種基本實例的創建:
- 創建一個ArrayList實例
ArrayList arrayList = new ArrayList();
arrayList.add (new Dog ());
arrayList.add (new Cat ());//Dog 和Cat是兩個不同的類
因爲ArrayList保存的是Object,因此可以通過add()方法將Dog對象和Cat對象放入同一個容器中。但當ArrayList通過get()方法取出的是Object引用,而不是放入容器中的對象,多疑在使用對象中的方法或成員變量時,需要強制轉型。即 (Dog)arrayList.get(0).name;
(Cat)arrayList.get(1).name;//假定Dog類和Cat類中都含有成員變量name。
但當執行(Cat)arrayList.get(0);或(Dog)arrayList.get(1);時就會報錯,因爲Cat和Dog是兩個不同類。下面的定義就可以避免這樣的錯誤的出現。- 創建一個預定義ArrayList泛型實例
ArrayList<Dog> dog = new ArrayList<Dog>();
其中尖括號括起來的是類型參數(可以有多個),它指定了這個容器可以保存的類型。通過使用泛型,就可以在編譯期防止將錯誤類型的對象放置到容器中。
dog.add (new Dog ());
dog.add (new Cat ());//將會生成一個編譯期錯誤。
使用泛型後,通過get()方法得到的不再是Object引用,而是容器中的對象,即dog.get(0)得到的是一個Dog對象。
通過使用泛型,不僅知道編譯器將會檢查你放置到容器中的對象類型,而且在使用容器中的對象時,可以用更加清晰的語法(如:dog.get(0))。