天天看點

Java集合類2—ArrayList、LinkList類

在Java中由List實作了兩個類——ArrayList和LinkedList。在Java的幫助文檔中我們可以看到ArrayList實作了List、RandomAccess、Cloneable、Serializeable接口。我們在這裡寫出這些接口并不是去研究這些接口,隻是希望讀者知道這個類并不是隻是實作了List接口得到的。

ArrayList 是由大小可變數組的實作。實作了所有可選清單操作,并允許包括 null 在内的所有元素。我們安裝JDK的時候都會帶着一個Java類庫的源碼包,在Java安裝目錄中的src壓縮檔案,讀者可以找到它。解壓找到其中的ArrayList,類庫的文檔結構跟我們包的結構相同。我們在裡面可以看到,ArrayList是由一個對象數組實作的。每個ArrayList 執行個體都有一個容量。該容量是指用來存儲清單元素的數組的大小。它總是至少等于清單的大小。随着向 ArrayList 中不斷添加元素,其容量也自動增長。

ArrayList有一些常用的函數,這些函數名字我們給出來,具體的實作及參數讀者自己參照Java的幫助文檔詳細學習:add、contains、get、indexOf、isEmpty、remove、set、size、toArray等,這裡都沒有寫參數和傳回值,大家自己看Java幫助文檔學習。下面我們寫一個執行個體程式:

Java集合類2—ArrayList、LinkList類

// one

two

three

[one, two, three]

上面的注釋簡單的實作了集合類并将其輸出,讀者注意如果我們直接列印的時候輸出的将會是地四行的樣子這是讀者要留意的。其他的方法我們就不在這裡一一實驗了。下面我們介紹一下LinkedList類。

LinkedList類是運用雙向循環連結清單來實作的,讀者可以研究源代碼驗證。由于跟ArrayList隻是實作的方法不同,其他的基本都相同,這裡我們就不過多的介紹了。在LinkedList中還有兩個方法——addFirst和addLast。這兩個方法在ArrayList中并沒有。利用這個及其他的方法,我們可以對LinkedList進行改造,實作棧(stack)、隊列(queue)、雙向隊列(double-ended queue)等資料結構。

對于這兩個類都有一個方法toArray(),該方法将傳回一個按照目前集合類對象中資料順序的對象數組。這個方法通常将作為集合類ArrayList和LinkedList類和數組轉換的橋梁,是以也是很重要的。下面我們将上面的代碼修改一下如下:

Java集合類2—ArrayList、LinkList類

輸出的結果和上面的一樣。

這種輸出的方法并不友善下一次我們将介紹Collections類和疊代器,以實作更多的功能。

希望本次的内容對你有幫助。