treemap 和 hashmap的效率比较

区别:1,hashmap是无序的,treemap是有序的,整个key是按照自然顺序来的。2,hashmap可以put一个null当key ,treemap却不支持。3,底层结构不一样,一个是数组➕红黑树,一个直接就是红黑树。

但是hashmap是最最最常用的map集合,不考虑顺序的时候,他是首选,假如你希望有点顺序的话,想使用一下treemap,但是整个treemap和整个hashmap的效率到底差别多少,不太确定,万一整个treemap效率很低,那就影响程序性能了,那就不好了。测试一下,有个底。

简单的测试代码:

    @Test
    public void test1() {
        Map<String, Object> hashMap = Maps.newHashMap();
        hashMap.put(null, "xs");
        hashMap.put(null, null);

        TreeMap<String, Object> treeMap = Maps.newTreeMap();
        treeMap.put(null, "xs");
        treeMap.put(null, null);
    }
    
    @Test
    public void test() {
        Map<String, Object> additionalData = logMessage.getAdditionalData();
        while (true) {
            hashMap(additionalData);
            treeMap(additionalData);
        }
    }

    private void treeMap(Map<String, Object> map) {
        TreeMap<String, Object> treeMap = Maps.newTreeMap();
        treeMap.putAll(map);
        treeMap.forEach((k, v) -> {
            String s = k + v;
        });
    }

    private void hashMap(Map<String, Object> map) {
        Map<String, Object> hashMap = Maps.newHashMap();
        hashMap.putAll(map);
        hashMap.forEach((k, v) -> {
            String s = k + v;
        });
    }

测试结果:略,第一个测试put null key的时候,直接NPE。主要看效率图。

看起来差别貌似不太大。真要深究的话,hashmap比treemap的putAll的效率是3:1,因为要拍个序,应该可以接受吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值