[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
- java容器之List+Comparable與Comparator比較Java
- Java 8 比較器:如何對 List 排序Java排序
- Python的List vs Tuple比較Python
- Java物件之間的比較之equals和==Java物件
- 【IOS】java 與oc之間的比較iOSJava
- Java 比較器Java
- JAVA字串比較Java字串
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- java比較日期大小Java
- Java和JavaSciprt比較Java
- java--BEAN比較JavaBean
- JAVA IO效能比較Java
- Java Integer型別比較Java型別
- Java 兩個日期比較Java
- Java 字串比較、拼接問題Java字串
- Java字串建立方式比較Java字串
- Java的BigDecimal比較大小JavaDecimal
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- C#中陣列Array、ArrayList、泛型List<T>的比較C#陣列泛型
- 雲原生Java與Golang比較 -lgorJavaGolang
- Java Bean Copy元件的效能比較JavaBean元件
- Java JIT與AOT效能比較 - foojayJava
- 常用的Java開發工具比較Java
- 【Java】浮點數相等性比較Java
- java double、float型別的比較Java型別
- Java,Pyhon,Scala比較(一)map,reduceJava
- Java,Python,Scala比較(三)wordcountJavaPython
- 不同Java垃圾回收器的比較Java
- Java集合(5)之 List 總結Java
- java 基礎之 Set、Map、ListJava
- 比較兩個List物件,找出新增、刪除、更改的條目物件
- js 深比較和淺比較JS
- 學Java看什麼書比較好Java
- 學Java的軟體哪些比較好用Java
- Java™ 教程(比較字串和字串的部分)Java字串
- Java如何正確比較浮點數Java
- Java 中 Comparable 和 Comparator 比較Java