[java之list比較]
前言:
最近在工作中常常用到list,這篇部落格來總結一下list.以便日後方便查詢.
核心:
型別/內容
ArrayList
LinkList
Vactor
資料結構
陣列結構
連結串列結構
陣列
查詢速度
快
慢
快
增刪效率
慢
快
慢
執行緒安全
不安全
不安全
執行緒安全(synchronized)
時間複雜度
隨機訪問時間固定
增加元素開銷固定
隨機訪問
空間複雜度
list列表結尾預留一定容量空間
每個元素消耗空間
容量空間
擴容
新容量=(舊容量*3)/2+1即1.5倍+1
2倍
ArrayList:底層資料結構是陣列結構,你就可以把它看成是一個可變大小的且只能裝物件的陣列。因為陣列有索引(角標)所以ArrayList的查詢速度快,而新增刪除元素速度稍慢。因為,你每刪除或者新增一個元素,你都要移動所新增或刪除元素後面的所有資料,該集合是執行緒不同步的
LinkedList:底層資料結構是連結串列結構的。連結串列資料結構是沒有索引的,當前元素只和他的前一個和後一個元素有關聯就像一串珠子一樣,該資料結構的特點是,增加刪除快,而查詢比較慢,因為增加刪除只需要找到當前元素,然後斷掉當前元素與它前一個和後一個元素的關聯即可,和陣列比,連結串列不用重複大部分的資料移動工作,但是因為沒有索引所以連結串列資料結構要一個一個的查詢資料,所以LinkedList的查詢速度稍慢
Vector:底層資料結構也是陣列結構的,除了執行緒安全問題上不同於ArrayList之外,其餘幾乎一樣。
陣列結構的查詢速度比較快,因為可以通過索引快速鎖定元素位置。連結串列結構的插入速度較快。
總結:
不斷總結,加油!
相關文章
- Java中List集合效能比較Java
- Python的List vs Tuple比較Python
- Java 比較器Java
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- 使用 BenchmarkDotNet 比較指定容量的 List 的效能
- java比較日期大小Java
- Java和JavaSciprt比較Java
- java--BEAN比較JavaBean
- Java的BigDecimal比較大小JavaDecimal
- Java 字串比較、拼接問題Java字串
- Java 中 Comparable 和 Comparator 比較Java
- Java字串建立方式比較Java字串
- java double、float型別的比較Java型別
- 雲原生Java與Golang比較 -lgorJavaGolang
- 【Java】浮點數相等性比較Java
- Java Bean Copy元件的效能比較JavaBean元件
- 常用的Java開發工具比較Java
- Java JIT與AOT效能比較 - foojayJava
- Java集合(5)之 List 總結Java
- 類和類之間的比較
- 比較兩個List物件,找出新增、刪除、更改的條目物件
- js 深比較和淺比較JS
- 【Java】Collection.sort以及比較器ComparatorJava
- Java™ 教程(比較字串和字串的部分)Java字串
- Java如何正確比較浮點數Java
- Java幾種常用JSON庫效能比較JavaJSON
- Java中CompletableFuture的thenApply與thenApplyAsync比較JavaAPP
- Dalvik 和 Java 位元組碼的比較Java
- 學Java看什麼書比較好Java
- 學Java的軟體哪些比較好用Java
- Java HTTP 客戶端的比較 - reflectoringJavaHTTP客戶端
- Python小知識之物件的比較Python物件
- Ajax 之戰:XMLHttpRequest與Fetch API比較XMLHTTPAPI
- ABAP SICF服務和Java Servlet的比較JavaServlet
- 八個層面比較 Java 8, RxJava, ReactorRxJavaReact
- SAP ABAP ADBC和Java JDBC的使用比較JavaJDBC
- 推薦Java 看什麼書比較好?Java
- java之深入理解List.subList()方法Java
- Oracle date 型別比較和String比較Oracle型別