HashMap的小优化
来源:互联网 发布:知乎知名药娘 编辑:程序博客网 时间:2024/05/20 09:47
HashMap是我们平日内用的非常多的集合框架,网上介绍有很多的实现原理,在存放数据数量已知的情况下,我们可以在构建hashmap的时候指定其容量,减少扩展空间时消耗的时间。下面看一个例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.HashMap;
import java.util.Map;
/**
* HashMap测试
*
* @author YD
*
*/
public class MapTest {
public static void main(String[] args) {
int num = 10000; //数据容量
Map<Integer, String> map1 = new HashMap<Integer, String>();
Map<Integer, String> map2 = new HashMap<Integer, String>(num);
Map<Integer, String> map3 = new HashMap<Integer, String>(num * 2);
long time1 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map1.put(i, "haha");
long time2 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map2.put(i, "haha");
long time3 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map3.put(i, "haha");
long time4 = System.currentTimeMillis();
System.out.println("map1 time: " + (time2 - time1) + "ms");
System.out.println("map2 time: " + (time3 - time2) + "ms");
System.out.println("map3 time: " + (time4 - time3) + "ms");
}
}
import java.util.Map;
/**
* HashMap测试
*
* @author YD
*
*/
public class MapTest {
public static void main(String[] args) {
int num = 10000; //数据容量
Map<Integer, String> map1 = new HashMap<Integer, String>();
Map<Integer, String> map2 = new HashMap<Integer, String>(num);
Map<Integer, String> map3 = new HashMap<Integer, String>(num * 2);
long time1 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map1.put(i, "haha");
long time2 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map2.put(i, "haha");
long time3 = System.currentTimeMillis();
for (int i = 0; i < num; i++)
map3.put(i, "haha");
long time4 = System.currentTimeMillis();
System.out.println("map1 time: " + (time2 - time1) + "ms");
System.out.println("map2 time: " + (time3 - time2) + "ms");
System.out.println("map3 time: " + (time4 - time3) + "ms");
}
}
在数据量为10000的时候,多次测试,得出的较多的结果是
1
2
3
2
3
map1 time: 14ms
map2 time: 9ms
map3 time: 4ms
map2 time: 9ms
map3 time: 4ms
在数据量为100000的时候,结果如下
1
2
3
2
3
map1 time: 31ms
map2 time: 16ms
map3 time: 9ms
map2 time: 16ms
map3 time: 9ms
如果数据量更大的时候,升值1000000(一百万)时,结果如下
1
2
3
2
3
map1 time: 119ms
map2 time: 47ms
map3 time: 59ms
map2 time: 47ms
map3 time: 59ms
数据量再增加10倍后(一千万),结果如下
1
2
3
2
3
map1 time: 7718ms
map2 time: 1035ms
map3 time: 2156ms
map2 time: 1035ms
map3 time: 2156ms
可以看出,当我们预先知道数据量的时候,在构建hashmap的时候指定数据容量,可以在数据量大的时候减少消耗时间。指定数据容量时,不应该过多的分配空间。
更多文章请访问小胖轩.
0 0
- HashMap的小优化
- HashMap的小测试
- HashMap的优化与实践
- HashMap的实现与优化
- Android中hashmap的优化
- HashMap的优化与实践
- HashMap的实现与优化
- HashMap的实现与优化
- HashMap全面分析及JDK8对HashMap的相关优化
- jdk1.8对HashMap的优化
- HashMap的使用,简单小代码
- 代码优化的小知识点
- MySQL优化的小知识
- 程序的一些小优化
- 一个小算法的优化
- Hadoop小文件的优化
- 优化图片的小尝试
- HashMap计数方法优化
- 出现老是弹出Visual Studio 实时调试器 的问题
- Java 8 新的时间日期库的20个使用实例
- OpenCV_人脸检测
- 企业发放的奖金根据利润提成。
- unable to recognise the format of input file lsof opensrc/lsof/lsof-4.81.dfsg
- HashMap的小优化
- we have do!
- Zookeeper框架
- Hello CSDN
- IOS 资料
- SlidingMenu的多种使用方式
- 解决iOS报错libc++abi.dylib handler threw exception
- 后缀数组模板
- hive安装搭建