加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

HashMap的小优化

发布时间:2020-12-13 20:42:03 所属栏目:PHP教程 来源:网络整理
导读:HashMap是我们平日内用的非常多的集合框架,网上介绍有很多的实现原理,在寄存数据数量已知的情况下,我们可以在构建hashmap的时候指定其容量,减少扩大空间时消耗的时间。下面看1个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

HashMap是我们平日内用的非常多的集合框架,网上介绍有很多的实现原理,在寄存数据数量已知的情况下,我们可以在构建hashmap的时候指定其容量,减少扩大空间时消耗的时间。下面看1个例子:

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
import java.util.HashMap;
java.util.Map;

/**
 * HashMap测试
 * 
 * @author YD
 *
 */

public class MapTest {
    static void main(String[] args) {
        int num = 10000;  //数据容量
        Map<Integer,String> map1 = new HashMap<>();
        Map<> map2 = >(num);
        Map<> map3 = >(num * 2);

        long time1 = System.currentTimeMillis();
        for (int i = 0; i < num; i++)
            map1.put(i, "haha");
        long time2 = 0; i < num; i++)
            map2.long time3 = 0; i < num; i++)
            map3.long time4 = currentTimeMillis();
        out.println("map1 time: " + (time2 - time1) + "ms");
        "map2 time: " + (time3 - time2) + "map3 time: " + (time4 - time3) + "ms");
    }
}

在数据量为10000的时候,屡次测试,得出的较多的结果是

1
2
3

map1 time: 14ms
map2 time: 9ms
map3 time: 4ms

在数据量为100000的时候,结果以下

map1 time: 31ms
map2 time: 16ms
map3 time: 9ms

如果数据量更大的时候,升值1000000(1百万)时,结果以下

map1 time: 119ms
map2 time: 47ms
map3 time: 59ms

数据量再增加10倍后(1千万),结果以下

map1 time: 7718ms
map2 time: 1035ms
map3 time: 2156ms

可以看出,当我们预先知道数据量的时候,在构建hashmap的时候指定数据容量,可以在数据量大的时候减少消耗时间。指定数据容量时,不应当过量的分配空间。


更多文章请访问小胖轩.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
    站长推荐
    热点阅读