一、數組和集合的定義
1、數組的定義
數組是java語言內置的數據類型,它是一個線性的序列,所以能快速訪問其他的元素,數組和其他語言不同,當你創建了一個數組時,它的容量是不變的,而且在生命周期也是不能改變的,還有JAVA數組會做邊界檢查,如果發現有越界現象,會報RuntimeException異常錯誤,當然檢查邊界會以效率為代價。
2、集合的定義
數組長度是固定,當添加的元素超過了數組的長度時需要對數組重新定義, 這樣太麻煩了! 所以, Java內部給我們提供了集合類,能存儲任意對象,長度是可以改變的,隨着元素的增加而增加,隨着元素的減少而減少。
JAVA還提供其他集合,list,map,set,他們處理對象的時候就好像這些對象沒有自己的類型一樣,而是直接歸根於Object,這樣只需要創建一個集合,把對象放進去,取出時轉換成自己的類型就行了。
二、數組和集合的區別
1、數組和集合的比較
(1)數組的特點
a.數組本質上就是一段連續的內存空間,用於記錄多個類型相同的數據;
b.數組一旦聲明完畢,則內存空間固定不變;
c.插入和刪除操作不方便,可能會移動大量的元素導致效率太低;
d.支持下標訪問,可以實現隨機訪問;
e.數組中的元素可以是基本數據類型,也可以使用引用數據類型;
f.數組是java語言中內置的數據類型,是線性排列的,執行效率或者類型檢查(不懂),都是最快的.
(2)集合的特點
a.內存空間可以不連續,數據類型可以不相同;
b.集合的內存空間可以動態地調整;
c.集合的插入刪除操作方便,可以不移動大量元素;
d.部分支持下標訪問(例如list),部分不支持; ArrayList就是基於數組創建的容器類.
e.集合中的元素必須是引用數據類型;
2、數組和集合的區別
一、數組聲明了它容納的元素的類型,而集合不聲明。
二、數組是靜態的,一個數組實例具有固定的大小,一旦創建了就無法改變容量了。而集合是可以動態擴展容量,可以根據需要動態改變大小,集合提供更多的成員方法,能滿足更多的需求。
三、數組既可以存儲基本數據類型 ,又可以存儲引用數據類型, 基本數據類型存儲的是值,引用數據類型存儲的是地址值; 一個數組的存放的類型只能是一種(基本類型/引用類型)。
集合存放的類型可以不是一種(不加泛型時添加的類型是Object)。(與Java數組不同,Java集合中不能存放基本類型數據,而只能存放對象的引用)。集合只能存儲引用數據類型(對象), 集合中也可以存儲基本數據類型,但是在存儲的時候會自動裝箱(JDK1.5新特性)變成對象.
四、數組是java語言中內置的數據類型,是線性排列的,執行效率或者類型檢查都是最快的。
五、若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫(ArrayList就是基於數組創建的容器類),array不適用。