2.1、ArrayList集合
ArrayList集合,底層實現(xiàn):采用數(shù)組的結(jié)構(gòu)實現(xiàn)的迹栓。(最大的特點:內(nèi)存連續(xù))吵取。
也會叫做變長數(shù)組。
優(yōu)點:遍歷集合中的元素聋溜,效率很高
缺點:更改集合中的元素谆膳,效率相對低。
JDK1.2版本
2.2撮躁、LinkedList集合
LinkedList集合:底層實現(xiàn):采用雙向鏈表的結(jié)構(gòu)實現(xiàn)漱病。
生活中的鏈表:
珍珠項鏈,手鏈把曼,自行車的鏈條杨帽。。
優(yōu)點:更改集合中的元素嗤军,效率很高注盈。
缺點:遍歷集合中的元素,效率相對低叙赚。
queue:隊伍老客,隊列,行列
生活中買電影票震叮,排隊
生活中買火車票胧砰,排隊
deque:double -ended queue,雙端隊列
LinkedList實現(xiàn)類苇瓣,區(qū)別于ArrayList尉间,除了實現(xiàn)List接口,還實現(xiàn)了Deque接口。
LinkedList實現(xiàn)類:
實現(xiàn)的接口:
List接口----------------------------------->Collection
Deque(雙端隊列)接口----->Queue(隊列)接口------>Collection
模擬棧的結(jié)構(gòu):后進先出(LIFO)乌妒,棧頂元素汹想,
push(),壓棧撤蚊,入棧古掏,pop(),彈棧,出棧
模擬隊列的結(jié)構(gòu):先進先出(FIFO)侦啸,隊頭元素
offer(),poll()
【擴展知識1】
數(shù)據(jù)結(jié)構(gòu):存儲的數(shù)據(jù)的組織特點槽唾。
線性表,鏈表光涂,樹庞萍。。忘闻。钝计。
棧:Stack,這種數(shù)據(jù)結(jié)構(gòu)的特點齐佳?
last In First Out私恬,簡稱LIFO,后進先出炼吴。
隊列:queue本鸣,
First in First out,簡稱FIFO硅蹦,先進先出荣德。
【擴展知識2】
Vector:向量
對比ArrayList,LinkedList童芹,Vector實現(xiàn)類
A:ArrayList涮瞻,底層采用數(shù)組結(jié)構(gòu)的實現(xiàn)的。(內(nèi)存中連續(xù)空間)假褪。jdk1.2
只實現(xiàn)了List接口饲宛,功能都是List接口中規(guī)定的。
優(yōu)缺點:
優(yōu)點:遍歷訪問元素嗜价,效率很高
缺點:插入或刪除元素艇抠,效率相對低。
B:LinkedList久锥,底層采用雙向鏈表結(jié)構(gòu)實現(xiàn)的家淤。(元素在內(nèi)存中不挨著,元素之間的指向)瑟由。jdk1.2
實現(xiàn)了List接口的同時絮重,還實現(xiàn)了Deque接口,所以有這兩個接口中的功能。
優(yōu)缺點:
優(yōu)點:插入或刪除元素青伤,效率很高督怜。
缺點:遍歷訪問元素,效率相對低狠角。
注意點:
如果一個集合号杠,頻繁的添加或刪除元素,建議選擇LinkedList丰歌。
如果一個集合姨蟋,絕大多數(shù)的操作就是遍歷查詢,建議選擇ArrayList立帖。
如果要模擬棧眼溶,隊列等結(jié)構(gòu),建議選擇LinkedList晓勇。
C:Vector堂飞,是ArrayList的前身。也是數(shù)組的結(jié)構(gòu)绑咱。古老的類绰筛。從jdk1.0的版本就有了。
線程安全羡玛,效率低,后來被ArrayList替代了宗苍。
ArrayList和LinkedList都是線程不安全的稼稿,效率高。Collections工具類讳窟,可以獲取線程安全的集合让歼。