ArrayList與String[]


不逼自己一把,你永遠不知道什么是絕望。

今天被初學java的朋友問到了String[]ArrayList是不是有關系呢?

猜測是名稱之間的聯想,記此篇解惑。

Array英語單詞里是數組、陣列的意思,在java中數組是這樣定義的:一組相關類型的變量集合。

格式:數據類型[] 數組名稱 = new 數據類型[長度];

根據上邊的格式,列舉幾個常見的數組,比如:String[] int[],如下是數組一些特點:

  1. 數組長度是固定的,無法實現動態擴容;
  2. 數組下標(從0開始)超出數組長度,數組越界異常(運行時異常);
  3. 數組中每個元素都有默認值,默認值是該數據類型默認值;
  4. 數組名稱.length(屬性):取得數組長度;

看完了上邊的數組特點,再來看看ArrayList吧,他又是個啥呢?

ArrayList就是動態數組,用MSDN中的說法,就是Array的復雜版本,它提供了動態的增加和減少元素,實現了ICollection和IList接口,靈活的設置數組的大小等好處 --- 百度百科

所以,看到這,已經明確String[]ArrayList是有點關系的了……

ArrayList是一個數組隊列,相當於動態數組,與Java中的數組不同,數組一旦創建,長度固定,但是ArrayList的長度是動態的,不受限制,可以存儲任意多的對象,但是只能存儲對象,不能存儲原生數據類型例如int(基本數據類型)。

如下是ArrayList的關系圖:


  1. 繼承於AbstractList,實現了List,提供了相關的添加、刪除、修改、遍歷等功能。
  2. 實現了RandmoAccess接口,即提供了隨機訪問的功能。RandmoAccessjava中用來被List實現,為List提供快速訪問功能的。在ArrayList中,我們即可以通過元素的序號快速獲取元素對象;這就是快速隨機訪問。
  3. 實現了Cloneable接口,即覆蓋了函數clone(),能被克隆。
  4. 實現了java.io.Serializable接口,這意味着ArrayList支持序列化,能通過序列化去傳輸。

總之,ArrayList是非常重要的一個類,在代碼中被廣泛使用。

點個題,看一下數組與ArrayList的比較:

操作 Array(String[]) ArrayList
創建 String[] array = new String[10]; ArrayList list = new ArrayList<>();
訪問一個元素 array[index] list.get(index);
更新一個元素 array[index] = "niceyoo"; list.set(index, "niceyoo");
返回大小 array.length list.size();
排序 java.util.Arrays.sort(array) java.util.Collections.sort(arraylist)
添加一個新元素 相當復雜 list.add("niceyoo");
插入一個新元素 相當復雜 list.add(index, "niceyoo");
刪除一個元素 相當復雜 list.remove(index);
刪除一個元素 相當復雜 list.remove(Object);
刪除所有元素 稍微復雜 list.clear();

我創建了一個用來記錄自己學習之路的公眾號,感興趣的小伙伴可以關注一下微信公眾號:niceyoo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM