ArrayList容器淺析

        ArrayList是最基本最可靠的容器,使用ArrayList相當簡單,創建一個實例,用add()插入對象,然後用get()訪問對象,此時需要使用索引,即get(i)。ArrayList兩種基本實例的創建:

  • 創建一個ArrayList實例 
        ArrayList arrayList = new ArrayList();
              首先在棧中開闢一塊內存空間存放arrayList引用,然後在堆中開闢一塊內存空間存放一個新建的ArrayList對象,並將對象的引用賦值給arrayList。(注:java容器類的大小都是可以自動調整自己的尺寸的)。

            向容器中添加對象:
       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))。


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