Java collection 集合 容器 效率問題
阿新 • • 發佈:2019-01-23
下面是關於 集合效率的問題
一萬條一下的資料 差距忽略不計。隨便用誰都行。
List : 可重複
Set : 不可重複
Map: key不可重複 value 可重複
操作 新增 遍歷 隨機查詢 特殊功能
Hash: 快 快 快 無序 當遍歷時,entrySet對key做了排序,所以你用entrySet遍歷是有序的
Linked: 快 快 慢 有序 存取順序一致,不該改變。
Tree: 中 快 慢 有序 安裝自然順序輸出(1,2,3 …a,b,c,d...) 。
效率最高的 ArrayList 和 HashMap
除了特殊情況,一般建議用上面兩種。
下面是資料的測試,等號後面代表執行花費時間 毫秒為單位:
一百萬 條簡單資料
List Map Set
=========add==========
ArrayList=23 HashMap=169 HashSet=1735
LinkedList=108 TreeMap=1809 TreeSet=1273
Vector =35 LinkedHashMap=1057 LinkedHashSet=2377
=======find=======
ArrayList=43 HashMap=250 HashSet=50
LinkedList=巨慢 TreeMap=819 TreeSet=47
Vector=54 LinkedHashMap=253 LinkedHashSet=41
=====list\set使用iterator()、Map使用entrySet遍歷======
ArrayList =19 HashMap=31 HashSet=56
LinkedList=46 TreeMap=32 TreeSet=50
Vector=135 LinkedHashMap=29 LinkedHashSet=55
=======delete=======
ArrayList=12 HashMap=41 HashSet=656
LinkedList=17 TreeMap=168 TreeSet=2154
Vector=32 LinkedHashMap=137 LinkedHashSet=225
十萬 條簡單資料
List Map Set
===================== 新增 =====================
ArrayList=7 HashMap=20 HashSet=125
LinkedList=5 TreeMap=40 TreeSet=135
Vector=6 LinkedHashMap=61 LinkedHashSet=53
=====================隨機查詢=====================
ArrayList=11 HashMap=45 HashSet=14
LinkedList=9215 TreeMap=24 TreeSet=15
Vector=10 LinkedHashMap=19 LinkedHashSet=12
=====list\set使用iterator()、Map使用entrySet遍歷======
ArrayList=9 HashMap=15 HashSet=11
LinkedList=4 TreeMap=10 TreeSet=9
Vector=5 LinkedHashMap=8 LinkedHashSet=7
==================== 刪除 ====================
ArrayList=9 HashMap=16 HashSet=315
LinkedList=7 TreeMap=27 TreeSet=79
Vector=31 LinkedHashMap=10 LinkedHashSet=49