都實(shí)現(xiàn)了List接口,但在用法上有區(qū)別
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2.對(duì)于隨機(jī)訪問get和set,ArrayList優(yōu)于LinkedList,因?yàn)锳rrayList可以隨機(jī)定位,而LinkedList要移動(dòng)指針一步一步的移動(dòng)到節(jié)點(diǎn)處。(參考數(shù)組與鏈表來思考)
3、當(dāng)插入的數(shù)據(jù)量很小時(shí),兩者區(qū)別不太大,當(dāng)插入的數(shù)據(jù)量大時(shí),大約在容量的1/10之前,LinkedList會(huì)優(yōu)于ArrayList,在其后就劣與ArrayList,且越靠近后面越差。一般首選用ArrayList,由于LinkedList可以實(shí)現(xiàn)棧、隊(duì)列以及雙端隊(duì)列等數(shù)據(jù)結(jié)構(gòu),所以當(dāng)特定需要時(shí)候,使用LinkedList,當(dāng)數(shù)據(jù)量大的時(shí)候,如果只需要在靠前的部分插入或刪除數(shù)據(jù),那也可以選用LinkedList,反之選擇ArrayList反而效率更高。