java基础

Java LinkedHashMap

2018-09-28  本文已影响4人  韭菜待收割

1、LinkedHashMap

一个有序的Map接口实现,可以按插入顺序或访问顺序排列。跟HashMap类似,允许null key和null值,内部维护着一个Entry数组,如果有Hash冲突会形成单链表,Entry内还多了2个before和after属性,维护着一个双向链表。

public class MainTest {

    public static void main(String[] args) {
        //默认情况下LinkedHashMap的遍历模式是插入顺序
        LinkedHashMap<String, String> map = new LinkedHashMap<>();
        map.put("name", "xmy");
        map.put("age", "18");
        map.put("job", "做白日梦");
        map.put("good at", "吹牛B");
        map.get("job");
        System.out.println("----------按插入顺序遍历----------");
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> next = iterator.next();
            System.out.println("key:" + next.getKey() + ";value=" + next.getValue());
        }
        System.out.println("----------按插入顺序遍历----------");

        System.out.println("----------按get读取顺序遍历----------");
        //get读取顺序  false表示的是插入模式
        LinkedHashMap<String, String> redMap = new LinkedHashMap<>(16, 0.75f, true);
        redMap.put("name", "xmy");
        redMap.put("age", "18");
        redMap.put("job", "做白日梦");
        redMap.put("good at", "吹牛B");
        //get()方法调用,导致对应的entry移动到双向链表的最后位置  
        redMap.get("job");
        Iterator<Map.Entry<String, String>> iterator2 = redMap.entrySet().iterator();
        while (iterator2.hasNext()) {
            Map.Entry<String, String> next = iterator2.next();
            System.out.println("key:" + next.getKey() + ";value=" + next.getValue());
        }
        System.out.println("----------按get读取顺序遍历----------");
    }

}
上一篇下一篇

猜你喜欢

热点阅读