下面是关于 集合效率的问题
一万条一下的数据 差距忽略不计。随便用谁都行。
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