欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java集合中l(wèi)ist的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“java集合中l(wèi)ist的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java集合中l(wèi)ist的示例分析”這篇文章吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供海滄企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作html5、小程序制作等業(yè)務(wù)。10年已為海滄眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。

1、List接口

該接口定義的元素是有序的且可重復(fù)的。相當(dāng)于數(shù)學(xué)里面的數(shù)列,有序可重復(fù)

booleanaddAll(intindex,Collection<?extendsE>c);將指定集合中所有元素,插入至本集合第index個元素之后defaultvoidreplaceAll(UnaryOperatoroperator);替換集合中每一個元素值defaultvoidsort(Comparator<?superE>c);給集合中的元素進行排序Eget(intindex);獲取集合中第index個元素Eset(intindex,Eelement);將集合中第index個元素替換成指定元素voidadd(intindex,Eelement);向集合中第index個位置添加一個元素Eremove(intindex);移除集合中第index個元素intindexOf(Objecto);得到指定元素在集合中的位置(第一次出現(xiàn))intlastIndexOf(Objecto);得到指定元素在集合中的位置(最后一次出現(xiàn))ListIteratorlistIterator();返回ListIteratorListIteratorlistIterator(intindex);返回ListIterator,并設(shè)置當(dāng)前位置ListsubList(intfromIndex,inttoIndex);截取List,從fromIndex到toIndex

2、List子類

2.1、AbstractList抽象類

該類實現(xiàn)了基本的List集合功能,如果實現(xiàn)的是只讀的List集合,繼承自該抽象類的子類只需要實現(xiàn)get(intindex)和size()兩個方法,如果是可操作的List集合,則必須重寫add和set方法,否則執(zhí)行add和set時會拋出UnsupportedOperationException異常

AbstractList抽象類中的迭代器通過get(intindex)訪問元素,通過remove(Objecto)刪除元素。

AbstractList抽象類包含了一個SubList子類,該子類通過包裝一個AbstractList抽象類對象實現(xiàn)元素的添加、刪除等功能。

該抽象類主要實現(xiàn)了如下方法:

booleanadd(Ee);添加元素e,內(nèi)部調(diào)用add(intindex,Eelement)實現(xiàn)intindexOf(Objecto);得到指定元素第一次在集合中的位置,內(nèi)部通過List迭代器實現(xiàn)intlastIndexOf(Objecto);得到指定元素在集合中的位置(最后一次出現(xiàn)),內(nèi)部List迭代器實現(xiàn),注意此處是從后往前迭代voidclear();清空List集合中的元素,內(nèi)部通過List迭代器實現(xiàn)booleanaddAll(intindex,Collection<?extendsE>c);插入集合c中所有元素,內(nèi)部調(diào)用add(intindex,Eelement)實現(xiàn)Iteratoriterator();返回一個迭代器對象,AbstractList抽象類內(nèi)部實現(xiàn)了一個迭代器ListIteratorlistIterator();返回一個List迭代器對象,AbstractList抽象類內(nèi)部實現(xiàn)了一個List迭代器booleanequals(Objecto);重寫Object的equals方法,內(nèi)部先判斷是否同一個對象,是返回true,否則判斷o是否是List對象,不是返回false,是的話迭代比較兩個集合中每一個元素是否一致,都一致返回trueinthashCode();內(nèi)部迭代集合中每一個元素計算出hashcode值ListsubList(intfromIndex,inttoIndex);得到List集合的子集合,內(nèi)部通過構(gòu)造AbstractList內(nèi)部的SubList實現(xiàn)

2.2、ArrayList

ArrayList繼承自AbstractList實現(xiàn)了List中所有方法,該集合可以插入任何元素包括null元素。

ArrayList內(nèi)部使用數(shù)組保存元素,他的size、isEmpty、get、set、add等操作都是常數(shù)時間。在獲取元素時會比LinkedList更有優(yōu)勢。

Arraylist有一個初始的大小,該大小會隨著元素的增加而增長。

ArrayList不是線程安全的,在多線程環(huán)境下使用時需要注意,我們可以通過Collections.synchronizedList(newArrayList(…));操作得到一個線程安全的ArrayList

ArrayList中的迭代器在List集合結(jié)果變化后,我們調(diào)用迭代器中的方法時會快速拋出ConcurrentModificationException異常通知程序,以免造成損失。

ArrayList的擴展策略:

在初始集合為空時,加入元素時會初始化Math.max(DEFAULT_CAPACITY,minCapacity)個空間,即取插入元素個數(shù)和DEFAULT_CAPACITY中比較大的那個數(shù)

集合非空時插入元素,如果空間不夠時,則取原集合大小擴展2倍和最小需求大小中較大的那個進行擴展

ArrayList重寫了Iterator和ListIterator,內(nèi)部直接通過遍歷數(shù)組實現(xiàn)

ArrayList重寫了SubList類,該類直接通過訪問數(shù)組實現(xiàn)

ArrayList主要包括以下屬性:

transientObject[]elementData;該對象數(shù)組用于存放集合中的元素intsize;該屬性用于保存集合的大小transientintmodCount;記錄ArrayList修改的次數(shù),在集合迭代器中會使用該數(shù)字判斷迭代時集合是否修改過

ArrayList主要包含以下構(gòu)造函數(shù):ArrayList(intinitialCapacity);構(gòu)造初始大小為initialCapacity的集合對象ArrayList();構(gòu)造一個空的數(shù)組元素ArrayList(Collection<?extendsE>c);使用傳入集合c構(gòu)造一個集合對象

ArrayList主要包括以下函數(shù):

voidtrimToSize();將集合中數(shù)組大小恢復(fù)至當(dāng)前集合大小,該操作可以壓縮集合使用空間voidensureCapacity(intminCapacity);通過傳入的minCapacity判斷集合是否需要擴展,需要的話則擴展數(shù)組大小,已足夠存放元素intindexOf(Objecto);得到指定元素第一次在集合中的位置,重寫了AbstractList類的方法,內(nèi)部直接遍歷元素數(shù)組實現(xiàn)intlastIndexOf(Objecto);同上Objectclone();重寫了clone方法,并且將元素數(shù)組復(fù)制一份出來,且將modCount致0,注意此處數(shù)組中元素并沒有clone,也就是說克隆后的集合和元集合使用同一份具體元素Object[]toArray();直接返回本集合中的數(shù)組Eget(intindex);直接訪問數(shù)組Eset(intindex,Eelement);直接設(shè)置數(shù)組元素值booleanadd(Ee);直接操作數(shù)組,想數(shù)組添加一個元素Eremove(intindex);直接操作數(shù)組booleanremove(Objecto);一樣遍歷數(shù)組,注意該操作會導(dǎo)致數(shù)組移動voidclear();遍歷將數(shù)組致空,同時設(shè)置size大小為0booleanaddAll(Collection<?extendsE>c);通過數(shù)組直接添加voidsort(Comparator<?superE>c);實現(xiàn)集合中元素排序功能,接收一個Comparator用以比較集合中元素的大小

2.3、AbstractSequentialList抽象類

AbstractSequentialList是一個抽象類,繼承自AbstractList抽象類

AbstractSequentialList內(nèi)部基于鏈表實現(xiàn),主要針對順序訪問list集合的情況,它在隨機訪問時表現(xiàn)較差

AbstractSequentialList的實現(xiàn)者需要提供listIterator和size兩個實現(xiàn),AbstractSequentialList內(nèi)部本身通過listIterator實現(xiàn)了其他函數(shù)

ArrayList主要包含以下函數(shù):

Eget(intindex);獲取第index個元素,內(nèi)部通過ListIterator實現(xiàn)Eset(intindex,Eelement);替換集合的第index個元素,內(nèi)部通過ListIterator實現(xiàn)voidadd(intindex,Eelement);想list集合中插入元素,內(nèi)部通過voidadd(intindex,Eelement)實現(xiàn)Eremove(intindex);刪除list中第index個元素,內(nèi)部通過ListIterator實現(xiàn)booleanaddAll(intindex,Collection<?extendsE>c);添加另一個集合中的所元素,內(nèi)部通過ListIterator實現(xiàn)Iteratoriterator();直接調(diào)用listIterator()方法

2.4、LinkedList

LinkedList繼承自AbstractSequentialList抽象類,實現(xiàn)了List、Deque、Cloneable、和Serializable接口

LinkedList內(nèi)部基于雙向鏈表實現(xiàn),允許插入任何元素,包括null

LinkedList不是線程安全的,在多線程環(huán)境下使用時需要注意,我們可以通過Collections.synchronizedList(newLinledList(…));操作得到一個線程安全的ArrayList

LinkedList中的迭代器在List集合結(jié)果變化后,我們調(diào)用迭代器中的方法時會快速拋出ConcurrentModificationException異常通知程序,以免造成損失。

LinkedList內(nèi)部使用Node類存儲元素,該類包含下面三個屬性,

Eitem;保存元素值得對象

Nodenext;下一個節(jié)點對象

Nodeprev;上一個節(jié)點對象

LinkedList重寫了ListIterator,內(nèi)部直接通過遍歷鏈表實現(xiàn)迭代器功能

LinkedList主要包含以下屬性

transientintsize=0;集合當(dāng)前大小transientNodefirst;鏈表的首元素transientNodelast;鏈表的尾元素

LinkedListList主要包含以下構(gòu)造函數(shù):LinkedList();空構(gòu)造函數(shù)LinkedList(Collection<?extendsE>c);使用另外一個集合的構(gòu)造函數(shù),會將另一個集合所有元素加入本集合中

LinkedList主要包含以下函數(shù):

自有函數(shù)

voidlinkFirst(Ee);插入元素至第一個位置voidlinkLast(Ee);插入元素至最后一個位置voidlinkBefore(Ee,Nodesucc);在某個元素之前插入一個元素EunlinkFirst(Nodef);移除第一個元素EunlinkLast(Nodel);移除最后一個元素Eunlink(Nodex);移除指定元素EgetFirst();得到第一個元素EgetLast();得到最后一個元素EremoveFirst();移除第一個元素EremoveLast();移除最后一個元素voidaddFirst(Ee);插入第一個元素voidaddLast(Ee);插入最后一個元素Nodenode(intindex);返回index對應(yīng)的Node節(jié)點

List函數(shù)

booleancontains(Objecto);是否包含某個元素intsize();返回集合大小,直接返回size變量booleanadd(Ee);添加一個元素,調(diào)用linkLast(e);booleanremove(Objecto);刪除指定元素,通過遍歷鏈表刪除booleanaddAll(Collection<?extendsE>c);將集合c插入至本集合,鏈表插入voidclear();遍歷鏈表,清空所有元素,將首尾元素制空Eget(intindex);獲取第index個元素,通過node(index)得到node節(jié)點Eset(intindex,Eelement);替換第index個元素,通過node(index)得到node節(jié)點,然后設(shè)置值voidadd(intindex,Eelement);在第index位置插入元素,調(diào)用linkBefore(element,node(index));Eremove(intindex);刪除第index個元素,通過unlink(node(index));實現(xiàn)intindexOf(Objecto);得到o對象在集合中的位置(第一次出現(xiàn)),通過遍歷鏈表實現(xiàn),從頭部開始遍歷intlastIndexOf(Objecto)得到o對象在集合中的位置(最后一次出現(xiàn)),通過遍歷鏈表實現(xiàn),從尾部開始遍歷

Deque函數(shù)Epeek();返回第一個元素,但不刪除。直接去first首元素,集合空時,返回nullEelement();返回第一個元素,但不刪除。集合空時拋出異常,調(diào)用getFirst();Eremove();獲得并移除隊列頂部元素,如果隊列為空拋出異常,調(diào)用removeFirstEpoll();獲得并移除隊列頂部元素,如果隊列為空返回null調(diào)用unlinkFirst(f)booleanoffer(Ee);隊列尾部插入元素,調(diào)用add(e)booleanofferFirst(Ee);隊列首部插入元素,調(diào)用addFirst(e);booleanofferLast(Ee);隊列尾部插入元素,調(diào)用addLast(e)EpeekFirst();返回首元素EpeekLast();返回最后一個元素,不刪除,空時返回nullEpollFirst();獲得并移除隊列頂部元素,如果隊列為空返回null調(diào)用unlinkFirst(f)EpollLast();獲得并移除隊列尾部元素,如果隊列為空返回null調(diào)用unlinkLast(f)voidpush(Ee);向首部插入元素,調(diào)用addFirst(e);,棧方法Epop();返回并移除首元素,調(diào)用removeFirst();,棧方法booleanremoveFirstOccurrence(Objecto);刪除第一次出現(xiàn)o的元素,調(diào)用remove(o);函數(shù)booleanremoveLastOccurrence(Objecto);刪除最后一次出現(xiàn)o的元素,從后向前遍歷鏈表,匹配后移除

2.5、Vector

功能和ArrayList類似,不同的是Vector是線程安全的,其大部分方法都加了synchronized關(guān)鍵字以保證多線程環(huán)境下線程安全問題。不過在可以確保沒有線程安全問題的情況下,我們還是應(yīng)該選擇ArrayList,因為ArrayList的效率要比Vector高。

2.6、CopyOnWriteArrayList

CopyOnWriteArrayList繼承Object,實現(xiàn)了List,RandomAccess,Cloneable,java.io.Serializable接口

CopyOnWriteArrayList是

CopyOnWriteArrayList內(nèi)部使用數(shù)組保存元素,但是它的數(shù)組大小等于集合的大小,因為它的增加、刪除、修改元素都是新copy一份數(shù)組

CopyOnWriteArrayList是線程安全的,他的寫操作加鎖,讀操作沒有加鎖,適用于讀多寫少的情況

CopyOnWriteArrayList實現(xiàn)了Iterator和ListIterator,內(nèi)部通過遍歷數(shù)組實現(xiàn),但是它的迭代器不支持操作元素。會拋出UnsupportedOperationException

CopyOnWriteArrayList主要包含以下屬性:

finaltransientReentrantLocklock;CopyOnWriteArrayList內(nèi)部使用的線程同步鎖transientvolatileObject[]array;集合內(nèi)部用于保存元素的地方

CopyOnWriteArrayList主要包含以下構(gòu)造函數(shù):

CopyOnWriteArrayList();構(gòu)造一個空的集合CopyOnWriteArrayList(Collection<?extendsE>c);創(chuàng)建一個包括闖入集合所有元素的集合CopyOnWriteArrayList(E[]toCopyIn);創(chuàng)建一個包含傳入數(shù)組所有元素的集合,注:此處會copy原有數(shù)組。

CopyOnWriteArrayList主要包括以下函數(shù):

finalObject[]getArray();得到集合持有的數(shù)組對象voidsetArray(Object[]a);設(shè)置集合的數(shù)組對象intsize();返回集合大小,直接返回數(shù)組的長度booleanisEmpty();判斷集合是否為空booleancontains(Objecto);判斷集合是否包含某元素intindexOf(Objecto);得到傳入元素在集合中第一次出現(xiàn)的位置索引intindexOf(Ee,intindex);得到傳入元素在集合中第一次出現(xiàn)的位置索引,從index開始查找intlastIndexOf(Objecto);得到傳入元素在集合中最后一次出現(xiàn)的位置索引,從集合尾部開始查找lastIndexOf(Ee,intindex);得到傳入元素在集合中出現(xiàn)的位置索引,從集合index開始往前查找Objectclone();返回集合的clone,集合的元素沒有被cloneObject[]toArray();轉(zhuǎn)換成數(shù)組,此處返回的是數(shù)組的copyT[]toArray(Ta[]);轉(zhuǎn)換成數(shù)組,如果傳入數(shù)組小于當(dāng)前集合,重新申請一塊空間,否則使用數(shù)組a,當(dāng)數(shù)組a大于集合長度時將數(shù)組a的臨近集合元素的第一個元素設(shè)置成null,可以方便用戶在知道集合不含null元素時判斷集合的大小Eget(intindex);獲取集合的index索引元素Eset(intindex,Eelement);設(shè)置集合的index元素的值booleanadd(Ee);往集合中添加元素voidadd(intindex,Eelement);插入元素至指定位置Eremove(intindex);移除指定位置的元素booleanremove(Objecto);移除第一次出現(xiàn)元素ovoidremoveRange(intfromIndex,inttoIndex);移除范圍內(nèi)的所有元素booleanaddIfAbsent(Ee);當(dāng)集合中不包含該元素時,添加該元素booleanaddIfAbsent(Ee,Object[]snapshot);當(dāng)集合中不包含該元素且傳入數(shù)組中也不包含該元素時,添加該元素booleancontainsAll(Collection<?>c);判斷集合是否全部包含傳入集合的元素booleanremoveAll(Collection<?>c);移除集合中c中所有元素booleanretainAll(Collection<?>c);移除集合中所有不在c中的元素intaddAllAbsent(Collection<?extendsE>c);遍歷c,當(dāng)c中元素不在集合中時,加入至集合voidclear();清空集合booleanaddAll(Collection<?extendsE>c);將集合c中所有元素加入至集合中booleanaddAll(intindex,Collection<?extendsE>c);將集合c中所有元素插入至index后

2.7、Stack

Stack繼承自Vector,他表示一種后進先出的數(shù)據(jù)結(jié)構(gòu),即棧。他擁有五種基本的操作即push、pop、peek、empty、search

Stack繼承自Vector,所以它也是線程安全的

Stack繼承自Vector,所以它內(nèi)部也是用數(shù)組存儲元素的

Stack自定義函數(shù)如下

Epush(Eitem);向棧頂添加一個元素Epop();從棧頂取出并刪除一個元素Epeek();得到棧頂元素booleanempty();判斷棧是否為空intsearch(Objecto);查找o的位置,存在返回距棧頂位置,否則返回-1

以上是“java集合中l(wèi)ist的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:java集合中l(wèi)ist的示例分析-創(chuàng)新互聯(lián)
文章URL:http://www.chinadenli.net/article18/cciggp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站導(dǎo)航外貿(mào)建站網(wǎng)站設(shè)計虛擬主機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)