java List集合总结
List集合
List集合代表一個有序、可重復的集合.本質是順序表,提供增刪改查數據的基本功能,且可以通過索引來插入替換和刪除集合元素的方法。
ArrayList
ArrayList是基于數組實現的List類,其封裝了一個動態的允許再分配的Object數組,這個數組默認大小是10.當向這個數組添加元素超過了這個數組的大小時,這個數組的長度會自動增加。線程不安全的。
ensureCapacity(int minCapacity),可以一次性增加一定數量的大小,減少分配次數,從而提高性能,用于確定要保存的數據的數量。 trimToSize()將Object[]數組的數組長度調整為當前元素的的個數,減少ArrayList對象占用的內存空間。 插入,刪除,修改,查找,獲取操作如下:
Vector
用法上幾乎和ArrayList完全相同,但Vector是線程安全的,因此性能比ArrayList低。
Stack
Vector的子類,表示后進先出(LIFO)對象堆棧。
peek():返回棧的第一個元素,不將該元素移出棧(即取出棧頂元素,也是返回數組末尾的元素); pop():返回棧的第一個元素,并將該元素移出棧(即,取出棧頂元素,并將該元素從棧中刪除,也是取出數組末尾的元素,然后將該元素從數組中刪除); push():將一個元素放入棧中,這個棧位于棧頂(通過將元素追加到數組的末尾中)。
LinkedList
底層數據結構是鏈表,查詢慢,增刪快,線程不安全,效率高。
1.實現了List接口,能對它進行隊列操作。
2.實現了Deque接口,即能將LinkedList當作雙端隊列使用;
3.由于是基于列表的,LinkedList的沒有擴容方法!默認加入元素是尾部自動擴容!
應用場景
ArrayList讀取速度快于LinkedList,而插入和刪除速度又慢于LinkedList。
1.ArrayList隨機讀取的時候采用的是get(index),根據指定位置讀取元素,而LinkedList則采用size/2 ,二分法去加速一次讀取元素!
2.ArrayList插入時候要判斷容量,刪除時候要將數組移位,有一個復制操作!而LinkedList直接插入,不用判斷容量,刪除的時候也是直接刪除跳轉指針節點,沒有復制的操作!
轉載于:https://juejin.im/post/5bd951e86fb9a0223261c379
總結
以上是生活随笔為你收集整理的java List集合总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webstorm设置
- 下一篇: 开发笔记7 | 部署 Go 应用程序到阿