常用Java集合類總結
此文已由作者趙計剛授權網易雲社區發布。
歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。
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集合類總結