日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java List集合总结

發布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java List集合总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

List集合

List集合代表一個有序、可重復的集合.本質是順序表,提供增刪改查數據的基本功能,且可以通過索引來插入替換和刪除集合元素的方法。

ArrayList

ArrayList是基于數組實現的List類,其封裝了一個動態的允許再分配的Object數組,這個數組默認大小是10.當向這個數組添加元素超過了這個數組的大小時,這個數組的長度會自動增加。線程不安全的。

ensureCapacity(int minCapacity),可以一次性增加一定數量的大小,減少分配次數,從而提高性能,用于確定要保存的數據的數量。 trimToSize()將Object[]數組的數組長度調整為當前元素的的個數,減少ArrayList對象占用的內存空間。 插入,刪除,修改,查找,獲取操作如下:

  • 插入操作需要先檢查是否需要擴容數組,如果數據是插入到尾部的則可直接賦值,否則插入到中部則需要調用System.arraycopy()方法(JNI方法)移動數據騰出空間,再插入數據。
  • 刪除操作直接通過System.arraycopy()操作覆蓋目標值的位置
  • 修改元素值只需要在數組中直接替換。
  • 查找操作是簡單的遍歷查找,因此效率可能不高 。但是比LinkedList的遍歷速度快。
  • 獲取元素操作通過index直接返回,比較高效。
  • 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集合总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。