Java中LinkedList和ArrayList的效率分析
在 Java 中,LinkedList 和 ArrayList 的性能是不同的,具體取決于你所需要的操作。
對于頻繁的插入和刪除操作,LinkedList 的性能通常更好,因為它使用了鏈表數(shù)據(jù)結(jié)構(gòu),只需更改節(jié)點的指針就可以在鏈表中插入或刪除元素。
然而,如果你需要頻繁的隨機訪問操作,ArrayList 的性能更快,因為它使用了數(shù)組數(shù)據(jù)結(jié)構(gòu),可以通過索引訪問任何元素。
下面是一個代碼案例,展示了在 Java 中使用 LinkedList 和 ArrayList 進行插入和刪除操作的時間差異。
package com.example.springbootpf4jservice; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; public class ListPerformanceTest { public static void main(String[] args) { List<Integer> arrayList = new ArrayList<>(); List<Integer> linkedList = new LinkedList<>(); Random rand = new Random(); // 用隨機整數(shù)填充列表。 for (int i = 0; i < 100000; i++) { int num = rand.nextInt(); arrayList.add(num); linkedList.add(num); } // 測量在每個列表的開頭插入元素所需的時間。 long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { arrayList.add(0, rand.nextInt()); } long endTime = System.currentTimeMillis(); System.out.println("ArrayList insert time: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { linkedList.add(0, rand.nextInt()); } endTime = System.currentTimeMillis(); System.out.println("LinkedList insert time: " + (endTime - startTime) + "ms"); } }
測試結(jié)果:
第一次:
第二次:
第三次:
到此這篇關(guān)于Java中LinkedList和ArrayList的效率分析的文章就介紹到這了,更多相關(guān)Java LinkedList和ArrayList的效率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java如何讀取properties文件將參數(shù)值配置到靜態(tài)變量
這篇文章主要介紹了java如何讀取properties文件將參數(shù)值配置到靜態(tài)變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08SpringCloud輪詢拉取注冊表與服務(wù)發(fā)現(xiàn)流程詳解
這篇文章主要介紹了SpringCloud輪詢拉取注冊表與服務(wù)發(fā)現(xiàn),現(xiàn)在很多創(chuàng)業(yè)公司都開始往springcloud靠了,可能是由于文檔和組件比較豐富的原因吧,畢竟是一款目前來說比較完善的微服務(wù)架構(gòu)2022-11-11FP-Growth算法的Java實現(xiàn)+具體實現(xiàn)思路+代碼
FP-Growth算法比Apriori算法快很多(但是卻比不上時間,how time slipped away)。在網(wǎng)上搜索后發(fā)現(xiàn)Java實現(xiàn)的FP-Growth算法很少,且大多數(shù)不太能理解):太菜。所以就自己實現(xiàn)了一下。這篇文章重點介紹一下我的Java實現(xiàn)2021-06-06