1. 程式人生 > >Java collection 集合 容器 效率問題

Java collection 集合 容器 效率問題

下面是關於 集合效率的問題
一萬條一下的資料 差距忽略不計。隨便用誰都行。
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