美文网首页
LinkedHashMap用法

LinkedHashMap用法

作者: endlesswork | 来源:发表于2019-11-13 19:11 被阅读0次

LinkedHashMap继承于HashMap,保证key有序。在LinkedHashMap支持2种排序,插入排序和访问排序,这里我们先看下插入排序,插入排序顾名思义就是根据我们put的前后顺序进行排序。

public class LinkedHashMapDemo {

    public static void main(String []args){
        LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap(4);
        linkedHashMap.put("ef","1");
        linkedHashMap.put("de","2");
        linkedHashMap.put("ww","3");
        linkedHashMap.put("te","4");
        HashMap<String,String> hashMap = new HashMap(4);
        hashMap.put("ef","1");
        hashMap.put("de","2");
        hashMap.put("ww","3");
        hashMap.put("te","4");
        System.out.println("LinkedHashMap开始");
        for(Map.Entry<String, String> entry: linkedHashMap.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        System.out.println("HashMap开始");
        for(Map.Entry<String, String> entry: hashMap.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
    }
}

结果如下,HashMap的展示结果可能有差异,因为每台电脑计算出来hashcode值可能不一样

LinkedHashMap开始
Key: ef Value: 1
Key: de Value: 2
Key: ww Value: 3
Key: te Value: 4
HashMap开始
Key: ww Value: 3
Key: ef Value: 1
Key: de Value: 2
Key: te Value: 4

接下来 我们再看下访问排序

public class LinkedHashMapDemo2 {

    public static void main(String []args){

        LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap(8);
        linkedHashMap.put("ef","1");
        linkedHashMap.put("de","2");
        linkedHashMap.put("ww","3");
        linkedHashMap.put("te","4");
        //我们对于ww重新塞入
        linkedHashMap.put("ww","33");
        System.out.println("LinkedHashMap插入排序重新赋值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        //我们添新值
        linkedHashMap.put("jl","5");
        System.out.println("LinkedHashMap插入排序添加新值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        //我们获取值
        linkedHashMap.get("de");
        System.out.println("LinkedHashMap插入排序获取值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }

        LinkedHashMap<String,String> linkedHashMap1 = new LinkedHashMap(8, 0.75f ,true);
        linkedHashMap1.put("ef","1");
        linkedHashMap1.put("de","2");
        linkedHashMap1.put("ww","3");
        linkedHashMap1.put("te","4");
        //我们对于ww重新塞入
        linkedHashMap1.put("ww","33");
        System.out.println("LinkedHashMap访问排序重新赋值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap1.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        //我们添新值
        linkedHashMap1.put("jl","5");
        System.out.println("LinkedHashMap访问排序添加新值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap1.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        //我们获取值
        linkedHashMap1.get("de");
        System.out.println("LinkedHashMap访问排序获取值测试开始");
        for(Map.Entry<String, String> entry: linkedHashMap1.entrySet())
        {
            System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
    }
}

结果如下,可以看到插入排序无论我们修改还是添加新值,都是按照我们插入的顺序,但是在访问排序中,一旦我们修改或者新增的、获取的,都会跑到最末尾

LinkedHashMap插入排序重新赋值测试开始
Key: ef Value: 1
Key: de Value: 2
Key: ww Value: 33
Key: te Value: 4
LinkedHashMap插入排序添加新值测试开始
Key: ef Value: 1
Key: de Value: 2
Key: ww Value: 33
Key: te Value: 4
Key: jl Value: 5
LinkedHashMap插入排序获取值测试开始
Key: ef Value: 1
Key: de Value: 2
Key: ww Value: 33
Key: te Value: 4
Key: jl Value: 5
LinkedHashMap访问排序重新赋值测试开始
Key: ef Value: 1
Key: de Value: 2
Key: te Value: 4
Key: ww Value: 33
LinkedHashMap访问排序添加新值测试开始
Key: ef Value: 1
Key: de Value: 2
Key: te Value: 4
Key: ww Value: 33
Key: jl Value: 5
LinkedHashMap访问排序获取值测试开始
Key: ef Value: 1
Key: te Value: 4
Key: ww Value: 33
Key: jl Value: 5
Key: de Value: 2

相关文章

网友评论

      本文标题:LinkedHashMap用法

      本文链接:https://www.haomeiwen.com/subject/wzwhictx.html