测试代码:
package jiben.data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.TreeSet;
public class HashMapT {
public static void main(String[] args) {
// TODO Auto-generated method stub
long s = System.nanoTime();
new HashMap();
System.out.println("HashMap 默认参数下的初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new HashMap(2000,0.75f);
System.out.println("HashMap 设置参数下的初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
int[] a = new int[2000];
System.out.println("Array 初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new ArrayList();
System.out.println("ArrayList 初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new LinkedList();
System.out.println("LinkedList 初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new HashSet();
System.out.println("HashSet 初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new HashSet(2000,0.75f);
System.out.println("HashSet 设置参数初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new TreeSet();
System.out.println("TreeSet 初始化时间"+(System.nanoTime()-s));
s = System.nanoTime();
new Hashtable(200,0.75f);
System.out.println("Hashtable 初始化时间"+(System.nanoTime()-s));
}
}
结果:时间单位是纳秒级别的
HashMap 默认参数下的初始化时间34896
HashMap 设置参数下的初始化时间6159
Array 初始化时间14369
ArrayList 初始化时间31611
LinkedList 初始化时间512770
HashSet 初始化时间29148
HashSet 设置参数初始化时间6980
TreeSet 初始化时间403565
Hashtable 初始化时间159291
结论:
1.HashMap/HashSet设置参数的初始化(空间大小的参数不影响初始化性能),性能高于HashMap/HashSet默认参数的初始化。
2.HashMap/HashSet初始化与Array的性能相近,但Array的初始化空间大小影响性能
3.建议使用集合优先考虑 Hash结构的集合