好奇JAVA開發(fā)LinkedList插入數(shù)據(jù)真的比ArrayList快嗎?
這個沒啥好不好奇的。數(shù)據(jù)結(jié)構(gòu)決定了的。
鏈表插入數(shù)據(jù)就是將節(jié)點(diǎn)加入到尾部,算法時間復(fù)雜度是O(1),相當(dāng)于插入數(shù)據(jù)的時間開銷是一個常量。
ArrayList是基于數(shù)組的實(shí)現(xiàn),插入數(shù)據(jù)時要看數(shù)組的容量夠不夠,容量足夠的話和鏈表插入性能差不多,但如果不夠就需要擴(kuò)容,擴(kuò)容就相當(dāng)于建立一個新數(shù)組,把原來的數(shù)據(jù)復(fù)制過去,這個開銷就比較大了,
所以在使用ArrayList時,如果指定了一個合適的Capacity,在使用時可以不擴(kuò)容或者減少擴(kuò)容次數(shù),就可以提高程序的性能。