Java編程基礎(chǔ)中l(wèi)ist的用法

Java編程基礎(chǔ)中l(wèi)ist的用法

深圳達(dá)內(nèi)教育      2022-04-12 13:42:02     9

Java編程基礎(chǔ)中l(wèi)ist的用法,Java中可變數(shù)組的原理就是不斷的創(chuàng)建新的數(shù)組,將原數(shù)組加到新的數(shù)組中。List集合是有序的,Developer可對其中每個元素的插入位

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

Java中可變數(shù)組的原理就是不斷的創(chuàng)建新的數(shù)組,將原數(shù)組加到新的數(shù)組中。List集合是有序的,Developer可對其中每個元素的插入位置進(jìn)行精確地控制,可以通過索引來訪問元素,遍歷元素。在List集合中,我們常用到ArrayList和linkedList這兩個類。其中,ArrayList底層通過數(shù)組實現(xiàn),隨著元素的增加而動態(tài)擴容。而linkedList底層通過鏈表來實現(xiàn),隨著元素的增加不斷向鏈表的后端增加節(jié)點。ArrayList是Java集合框架中使用最多的一個類,是一個數(shù)組隊列,線程不安全集合。它繼承于AbstractList,實現(xiàn)了List,RandomAccess,Cloneable,Serializable接口。

ArrayList實現(xiàn)List,得到了List集合框架基礎(chǔ)功能;

ArrayList實現(xiàn)RandomAccess,獲得了快速隨機訪問存儲元素的功能,RandomAccess是一個標(biāo)記接口,沒有任何方法;

ArrayList實現(xiàn)Cloneable,得到了clone()方法,可以實現(xiàn)克隆功能;

ArrayList實現(xiàn)Serializable,表示可以被序列化,通過序列化去傳輸,典型的應(yīng)用就是hessian協(xié)議。

Java List的常用操作

list中添加,獲取,刪除元素;

添加方法是:.add(e);

獲取方法是:.get(index);

刪除方法是:.remove(index);按照索引刪除;.remove(Object o);按照元素內(nèi)容刪除;

利用list中索引位置重新生成一個新的list(截取集合);

方法:.subList(fromIndex,toIndex);.size();該方法得到list中的元素數(shù)的和

去重復(fù);

list中根據(jù)索引將元素數(shù)值改變;

注意.set(index,element);和.add(index,element);的不同;

List的子類

1、linkedList類

linkedList實現(xiàn)了List接口,允許null元素。此外linkedList提供額外的get,remove,insert方法在linkedList的首部或尾部。這些操作使linkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)。

注意linkedList沒有同步方法。如果多個線程同時訪問一個List,則必須自己實現(xiàn)訪問同步。一種解決方法是在創(chuàng)建List時構(gòu)造一個同步的List:

2、ArrayList類

ArrayList實現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒有同步。

size,isEmpty,get,set方法運行時間為常數(shù)。但是add方法開銷為分?jǐn)偟某?shù),添加n個元素需要O(n)的時間。其他的方法運行時間為線性。

每個ArrayList實例都有一個容量(Capacity),即用于存儲元素的數(shù)組的大小。這個容量可隨著不斷添加新元素而自動增加,但是增長算法并沒有定義。當(dāng)需要插入大量元素時,在插入前可以調(diào)用ensureCapacity方法來增加ArrayList的容量以提高插入效率。

和linkedList一樣,ArrayList也是非同步的(unsynchronized)。

特點是:尋址容易,插入和刪除困難;

3、Vector類

Vector非常類似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的Iterator是同一接口,但是,因為Vector是同步的,當(dāng)一個Iterator被創(chuàng)建而且正在被使用,另一個線程改變了Vector的狀態(tài)(例如,添加或刪除了一些元素),這時調(diào)用Iterator的方法時將拋出ConcurrentModificationException,因此必須捕獲該異常。

4、Stack類

Stack繼承自Vector,實現(xiàn)一個后進(jìn)先出的堆棧。Stack提供5個額外的方法使得Vector得以被當(dāng)作堆棧使用?;镜膒ush和pop方法,還有peek方法得到棧頂?shù)脑?,empty方法測試堆棧是否為空,search方法檢測一個元素在堆棧中的位置。Stack剛創(chuàng)建后是空棧。

以上就是深圳達(dá)內(nèi)教育java培訓(xùn)機構(gòu)的小編針對“Java編程基礎(chǔ)中l(wèi)ist的用法”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。