Java容器之LinkedHashMap源码解析(视频讲解)

内容简介:讲解LinkedHashMap的源码和数据结构。分析其性能及影响性能的因素。从性能和数据结构方面对比HashMap。LinkedHashMap使用了双向链表,因此和LinkedList进行了相关对比讲解,在LinkedList的专题讲解中,提出尽量避免使用LinkedList,因此对LinkedHashMap也进行了相关讨论。得出可以广泛使用LinkedHashMap的结论。

视频地址:https://mp.weixin.qq.com/s/a-fMRWi3DDAhKZSIUDIMWA

内容补充:

  • 我在视频中多次提到了“指针”和“引用”。这里做个说明,JAVA中是没有指针的概念的,因为在JAVA中,所有都是值传递,传递对象时使用的是对象的地址。相同的,JAVA中也没有引用传递的概念,因为都是值传递,因此我视频中说的“指针”和“引用”只是一种表达方法,大家心里明白就好。

  • 视频录好后时长超过了40分钟,因此删掉了关于“内存寻址”的部分。该部分主要通过内存管理模型讲解为什么内存顺序读比内存随机读要快,以及由于cpu内部缓存的作用,内存地址间隔小的读取速度快。删掉的原因一方面是因为时长,另一方面是我本身对于内存模型和寻址逻辑并不专业,说的也不一定全对。有兴趣的朋友可以研究下,欢迎通过下方的联系方式和我相互交流。

  • 视频最后的总结:

    1.LinkedHashMap内的记录是有顺序的;

    2.可以根据插入顺序排序(默认),也可以根据访问频率排序;

    3.LinkedHashMap的性能开销小于TreeMap,因此如果有排序需求应优先考虑前者;

    4.根据频率排序时,put和get相关方法会影响频率。replace方法只有实际替换后才会影响频率,否则不影响;

    5.综合性能低于HashMap,但迭代性能可能会高于HashMap;

    6.removeEldestEntry方法可以保持固定大小size。

更多视频讲解请关注我的公众号:

你可能感兴趣的:(Java,java,hashmap,编程语言,链表,数据结构)