自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹java中的集合框架

開(kāi)發(fā) 后端
本文介紹的是JAVA中的集合框架,希望對(duì)你有幫助,一起來(lái)看吧!

集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。任何集合框架都包含三大塊內(nèi)容:對(duì)外的接口、接口的實(shí)現(xiàn)和對(duì)集合運(yùn)算的算法。

java集合框架

1. 什么是框架:類庫(kù)的集合

2.集合框架:用來(lái)表示和操作的統(tǒng)一的架構(gòu),包含了實(shí)現(xiàn)集合的接口與類

3.集合:存放數(shù)據(jù)的容器

集合框架包含了兩部分:一部分是接口,一部分是類

4.為什么會(huì)出現(xiàn)接口:因?yàn)榧峡蚣苤械暮芏囝?功能是相似的【所以用接口來(lái)規(guī)范類】

主要結(jié)構(gòu)圖:

結(jié)構(gòu)圖

注:在"集合框架"中,接口 Map 和 Collection 在層次結(jié)構(gòu)沒(méi)有任何親緣關(guān)系,它們是截然不同的。

不要簡(jiǎn)單的認(rèn)為集合類機(jī)會(huì)就這些,jdk中集合類有很多這些不過(guò)是我們經(jīng)常用到的而已
Collection、List、Set、Queue和Map都是接口(Interface),不是具體的類實(shí)現(xiàn)。

一.List[public interface List<E>extends Collection<E>]:

A.有序的集合接口,可以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問(wèn)元素,并搜索列表中的元素。

B.與 set 不同,列表通常允許重復(fù)的元素。更正式地說(shuō),列表通常允許元素e1和元素e2滿足e1.equals(e2).并且如果列表本身允許null 元素的話,通常它們?cè)试S多個(gè) null 元素。難免有人希望通過(guò)在用戶嘗試插入重復(fù)元素時(shí)拋出運(yùn)行時(shí)異常的方法來(lái)禁止重復(fù)的列表

C.List 接口在 iterator、add、remove、equals 和 hashCode 方法的協(xié)定上加了一些其他約定,更加規(guī)范了 Collection 接口中指定的約定。為方便起見(jiàn),這里也包括了其他繼承方法的聲明

D.List 接口提供了 4 種對(duì)列表元素進(jìn)行定位(索引)訪問(wèn)方法。列表(像 Java 數(shù)組一樣)是基于 0 的。注意,這些操作可能在和某些實(shí)現(xiàn)(例如 LinkedList 類)的索引值成比例的時(shí)間內(nèi)執(zhí)行。因此,如果調(diào)用方不知道實(shí)現(xiàn),那么在列表元素上迭代通常優(yōu)于用索引遍歷列表

E. 除了具有Collection接口必備的iterator()方法外,List還提供一個(gè)listIterator()方法,返回一個(gè) ListIterator接口,和標(biāo)準(zhǔn)的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設(shè)定元素,還能向前或向后遍歷。

至于 List提供如下方法:

LIST提供方法圖示 

List接口實(shí)現(xiàn)類很多:

AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector 一般情況下主要用到的是ArrayList,和LinkedList,其他的類并不是說(shuō)沒(méi)用 

ArrayList

ArrayList允許所有元素包括null。ArrayList沒(méi)有同步

理解一:ArrayList 使用一個(gè)內(nèi)置的數(shù)組來(lái)存儲(chǔ)元素,這個(gè)數(shù)組的起始容量是10.當(dāng)數(shù)組需要增長(zhǎng)時(shí),新的容量按如下公式獲得:新容量=(舊容量*3)/2+1,也就是說(shuō)每一次容量大概會(huì)增長(zhǎng)50%。這就意味著,如果你有一個(gè)包含大量元素的ArrayList對(duì)象,那么最終將有很大的空間會(huì)被浪費(fèi)掉,這個(gè)浪費(fèi)是由 ArrayList的工作方式本身造成的。如果沒(méi)有足夠的空間來(lái)存放新的元素,數(shù)組將不得不被重新進(jìn)行分配以便能夠增加新的元素。

對(duì)數(shù)組進(jìn)行重新分配,將會(huì)導(dǎo)致性能急劇下降。如果我們知道一個(gè)ArrayList將會(huì)有多少個(gè)元素,我們可以通過(guò)構(gòu)造方法來(lái)指定容量。我們還可以通過(guò)trimToSize方法在 ArrayList分配完畢之后去掉浪費(fèi)掉的空間。

理解二:ArrayList是用數(shù)組實(shí)現(xiàn)的,它不是真正的鏈表,在初始化的時(shí)候它先對(duì)數(shù)組設(shè)置一個(gè)初始容量,當(dāng)數(shù)組空間不夠的時(shí)候,它會(huì)重新構(gòu)建一個(gè)容量更大的數(shù)組,然后把先前的元素拷貝進(jìn)去

不管是一還是二暫且不管他存放元素的方式。***一點(diǎn)可以確認(rèn)他使用內(nèi)置的數(shù)組

LinkedList

List接口的鏈接列表實(shí)現(xiàn)。實(shí)現(xiàn)所有可選的列表操作,并且允許所有元素(包括 null)。除了實(shí)現(xiàn) List 接口外,

LinkedList 類還為在列表的開(kāi)頭及結(jié)尾 get、remove 和 insert 元素提供了統(tǒng)一的命名方法。這些操作允許將鏈接列表用作堆棧、隊(duì)列或雙端隊(duì)列 (deque)。此類實(shí)現(xiàn) Queue 接口,為 add、poll 等提供先進(jìn)先出隊(duì)列操作。其他堆棧和雙端隊(duì)列操作可以根據(jù)標(biāo)準(zhǔn)列表操作方便地進(jìn)行再次強(qiáng)制轉(zhuǎn)換。雖然它們可能比等效列表操作運(yùn)行稍快,但是將其包括在這里主要是出于方便考慮.

希望通過(guò)以上內(nèi)容的介紹,能夠給你帶來(lái)幫助。

責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2023-10-09 07:57:14

JavaJCF

2011-07-21 17:02:48

JAVA模式框架

2009-06-19 14:49:43

Spring框架

2009-11-09 14:15:17

WCF集合類型

2011-07-11 15:02:54

枚舉

2011-07-21 15:44:33

Java內(nèi)部類

2019-07-22 09:59:20

Java框架集合

2011-07-05 17:29:56

2011-07-04 10:32:37

JAVA

2011-07-22 16:50:05

JAVA

2011-06-08 15:45:41

字符串JAVA

2010-03-18 15:47:07

Java創(chuàng)建線程

2009-12-15 18:39:36

Ruby Active

2023-11-02 08:10:13

框架Spring程序事件

2009-06-30 14:01:00

Java集合框架Java數(shù)組排序

2011-06-21 14:25:44

JavaScriptcookie

2011-07-08 16:54:39

JspCookies

2011-06-22 08:38:35

Java EE

2011-06-08 16:05:34

VB數(shù)組

2011-07-20 15:58:53

C++引用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)