区别: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,因为要拍个序,应该可以接受吧。


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

fastjson com.alibaba.fastjson.JSONException: unclosed string : 十知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。