鏈表有索引嗎 arraylist和linkedlist區(qū)別?
arraylist和linkedlist區(qū)別?LinkedList和ArrayList的區(qū)別1。不同的數(shù)據(jù)結(jié)構(gòu)ArrayList是數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是link的數(shù)據(jù)結(jié)構(gòu)。2. 效率不
arraylist和linkedlist區(qū)別?
LinkedList和ArrayList的區(qū)別
1。不同的數(shù)據(jù)結(jié)構(gòu)
ArrayList是數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是link的數(shù)據(jù)結(jié)構(gòu)。
2. 效率不同
隨機(jī)訪問列表(get和set操作)時(shí),ArrayList比LinkedList效率更高,因?yàn)長inkedList是一種線性數(shù)據(jù)存儲(chǔ)模式,所以需要前后移動(dòng)指針。
添加和刪除數(shù)據(jù)(添加和刪除操作)時(shí),LinkedList比ArrayList更高效。由于ArrayList是一個(gè)數(shù)組,在其中添加和刪除操作會(huì)影響操作點(diǎn)之后所有數(shù)據(jù)的下標(biāo)索引,因此需要進(jìn)行數(shù)據(jù)移動(dòng)。
3. 不同的自由度
ArrayList的自由度比較低,因?yàn)樗枰謩?dòng)設(shè)置固定大小的容量,但是使用起來比較方便,只需要?jiǎng)?chuàng)建,然后添加數(shù)據(jù),并通過調(diào)用下標(biāo)來使用;而LinkedList的自由度比較高,可以隨數(shù)據(jù)量的變化而動(dòng)態(tài)變化,但是使用起來并不容易。
arraylist和linkedlist的區(qū)別和使用場景?
1. ArrayList是基于array實(shí)現(xiàn)的,其構(gòu)造函數(shù)為:private transient object[]elementdata private int size。ArrayList初始化時(shí),elementdata數(shù)組的大小默認(rèn)為10;每次add()時(shí),都會(huì)調(diào)用ensuracapacity(),以確保數(shù)組不會(huì)溢出。如果此時(shí)已滿,則將其擴(kuò)展到數(shù)組長度1的1.5倍,然后使用數(shù)組.copy[2] LinkedList是基于雙鏈表實(shí)現(xiàn)的:object element entry下一步,初始化前,使用header的優(yōu)點(diǎn)是:在任何條目(包括第一條和最后一條)中都有一個(gè)pre-entry和post-entry,因此在LinkedList對象的開頭或結(jié)尾沒有特殊的插入位置;使用場景:(1)如果應(yīng)用程序在每個(gè)索引位置存儲(chǔ)大量元素,結(jié)果表明ArrayList對象在獲取或刪除操作方面比LinkedList對象要好得多;(2)如果應(yīng)用程序主要循環(huán)列表,并在循環(huán)中插入或刪除操作,LinkedList對象比ArrayList對象好得多;