1. 程式人生 > >常用Java集合類總結

常用Java集合類總結

csdn 分布 雲服務器 href size java 最大 style ron

此文已由作者趙計剛授權網易雲社區發布。

歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。


7.1、List(允許重復元素)

  • ArrayList:

    • 底層數據結構:Object[]

    • 查詢(get)、遍歷(iterator)、修改(set)使用的比較多的情況下,用ArrayList

    • 可擴容,容量無限

  • LinkedList

    • 底層數據結構:環形雙向鏈表

    • 增加(add)、刪除(remove)使用比較多的情況下,用LinkedList

    • 鏈表,容量無限

說明:

1)add(E e):在數組末尾插入元素,ArrayList需要考慮擴容問題,一旦擴容就要進行數組復制,LinkedList不需要;

2)add(int index):在數組中間插入元素,ArrayList需要考慮將該index及其後的數組元素全部復制後移一位,LinkedList不需要

7.2、Set(不允許重復元素,所以可用於去重操作)

  • HashSet:

    • 底層數據結構:HashMap

    • 可看做容量無限

  • TreeSet:

    • 底層數據結構:TreeMap

    • 容量無限

7.3、Map(key-value)

  • HashMap:

    • 底層數據結構:鏈表數組

    • 可擴容,且最大容量極大,可看做容量無限

  • TreeMap:

    • 底層數據結構:紅黑樹

    • 可以實現按key排序(在使用中,要麽使用TreeMap(Comparator),要麽讓key對象實現Comparable)

    • 紅黑樹,容量無限

註意:

  • 以上全部線程不安全

  • 對於查找和刪除較為頻繁,且元素數量較多(元素數量>100)的情況下,Set和Map性能要比List好一些(單線程情況下)

上邊第二個結論是在《分布式Java基礎:應用與實踐》一書中,林昊通過一系列的測試結果得出的。



免費領取驗證碼、內容安全、短信發送、直播點播體驗包及雲服務器等套餐

更多網易技術、產品、運營經驗分享請點擊。


相關文章:
【推薦】 《深入理解計算機系統》之淺析程序性能優化
【推薦】 微服務監控探索

常用Java集合類總結