一、數(shù)組與集合的不同
1、數(shù)組聲明了它容納的元素的類型,而集合不聲明。
2、數(shù)組的長(zhǎng)度是固定的,集合長(zhǎng)度是可以改變的。
數(shù)組是靜態(tài)的,一個(gè)數(shù)組實(shí)例具有固定的大小,一旦創(chuàng)建了就無(wú)法改變?nèi)萘苛恕6鲜强梢詣?dòng)態(tài)擴(kuò)展容量,可以根據(jù)需要?jiǎng)討B(tài)改變大小,集合提供更多的成員方法,能滿足更多的需求。
3、數(shù)組的存放的類型只能是一種(基本類型/引用類型),集合存放的類型可以不是一種(不加泛型時(shí)添加的類型是Object)。
4、數(shù)組是java語(yǔ)言中內(nèi)置的數(shù)據(jù)類型,是線性排列的,執(zhí)行效率或者類型檢查都是非常快的。
5、集合以接口和類的形式存在,具有封裝,繼承和多態(tài)等類的特性,通過(guò)簡(jiǎn)單的方法和屬性調(diào)用即可實(shí)現(xiàn)各種復(fù)雜的操作,大大提高軟件的開(kāi)發(fā)效率。
數(shù)組
數(shù)組是java語(yǔ)言內(nèi)置的數(shù)據(jù)類型,他是一個(gè)線性的序列,所有可以快速訪問(wèn)其他的元素,數(shù)組和其他語(yǔ)言不同,當(dāng)你創(chuàng)建了一個(gè)數(shù)組時(shí),他的容量是不變的,而且在生命周期也是不能改變的,還有JAVA數(shù)組會(huì)做邊界檢查,如果發(fā)現(xiàn)有越界現(xiàn)象,會(huì)報(bào)RuntimeException異常錯(cuò)誤,當(dāng)然檢查邊界會(huì)以效率為代價(jià)。
集合
JAVA還提供其他集合,list,map,set,他們處理對(duì)象的時(shí)候就好像這些對(duì)象沒(méi)有自己的類型一樣,而是直接歸根于Object,這樣只需要?jiǎng)?chuàng)建一個(gè)集合,把對(duì)象放進(jìn)去,取出時(shí)轉(zhuǎn)換成自己的類型就行了。
延伸閱讀:
二、List接口是什么
List是有序的Collection,使用此接口能夠精確的控制每個(gè)元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數(shù)組下標(biāo))來(lái)訪問(wèn)List中的元素,這類似于Java的數(shù)組。
和下面要提到的Set不同,List允許有相同的元素。除了具有Collection接口必備的iterator()方法外,List還提供一個(gè)listIterator()方法,返回一個(gè)ListIterator接口,和標(biāo)準(zhǔn)的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設(shè)定元素,還能向前或向后遍歷。
實(shí)現(xiàn)List接口的常用類有LinkedList,ArrayList,Vector和Stack。