package com.barry;
import java.util.HashMap;
import java.util.Map;
/**
* @Author BarryFitzgerald
* @Date 2023/4/16 19:35
* @Description:
* 1、创建10个HashMap,每个HashMap含有10万条记录;
* 2、传递不同的构造方法的参数比较速度;
* 3、构造方法参数分别使用(16,0.75f)和(16384,0.75)
*/
public class TestMapWithParameter {
public static void main(String[] args) {
long sum = 0L;
for(int i=0;i<10;i++){
sum +=new TestMapWithParameter().inputMap(100000,0.75f);
}
System.out.println(sum/10);
}
public Long inputMap(int initialCapacity,float loadFactor){
String key,value;
Map<String, String> testMap = new HashMap<String, String>(initialCapacity,loadFactor);
long start = System.nanoTime();
for(int i=0;i<100000;i++){
key = String.valueOf(i);
value = "value";
testMap.put(key,value);
}
long end = System.nanoTime();
long time = end - start;
System.out.println("creating new hashmap using:"+time);
return time;
}
}
1万的空间和100万差别很大
16和100万差别也很大,
在100万数据面前,16383的空间和16的并没有什么差别。
再加上重复运行相同代码,Java会对优化,可能会更快。
所以会造成16的比16384快的可能。