`
latex
  • 浏览: 29254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.util.LinkedHashMap源码学习(一)

阅读更多
java.util.LinkedHashMap:

LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。

LinkedHashMap中重要的字段:

1. Entry<K,V> header
在构造的时候被初始化,开始的时候header的头尾都是指向自身。

2. boolean accessOrder
迭代时的顺序,若为false则按照插入的顺序排序;若为true则按照访问的顺序排序,读的越多越在前。默认值为false,即按照插入顺序进行排序。

LinkedHashMap的构造函数:

1. LinkedHashMap(int initialCapacity, float loadFactor)
2. LinkedHashMap (int initialCapacity)
3. LinkedHashMap ()
4. LinkedHashMap (Map<? extends K, ? extends V> m)
5. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)

LinkedHashMap调用了父类HashMap的构造方法。不同的是增加了accessOrder字段的初始化。我们可以看到,附非指定,accessOrder的默认值为false,也就是说,LinkedHashMap中元素默认的迭代顺序为放入的次序,只有当指定accessOrder为true时,元素的迭代顺序才是按照访问的频次。
分享到:
评论

相关推荐

    java.util包源码pdf版

    通过阅读`java.util`包源码,不仅可以深入了解Java集合框架的内部工作原理,还能学习到高级的数据结构设计模式。对于想要提高自己编程技能的开发者来说,这是一个非常宝贵的学习资源。同时,熟悉这些源码也有助于在...

    java.util源码-JavaUtility-SourceCode:JavaUtility-SourceCode

    在Java编程语言中,`java.util`包是核心库的一部分,包含了大量用于处理日常编程任务的类和接口。这个源码分析将深入探讨`java.util`包中的关键组件,了解它们的工作原理,这对于任何Java开发者来说都是至关重要的。...

    java数据结构源码

    Java的`java.util.HashMap`和`java.util.LinkedHashMap`是两种常见的散列表实现。 12. 双向链表:双向链表中的每个节点包含前后两个指针,支持双向遍历。Java的`java.util.Deque`接口和`java.util.LinkedList`类...

    java.util源码-Java-utils:各种实用Java源代码

    在Java编程语言中,`java.util`包是核心库的一部分,包含了大量用于处理日常编程任务的类和接口。这个包提供了各种数据结构(如ArrayList、LinkedList、HashSet、HashMap)、集合框架、日期时间处理、随机数生成、IO...

    Java数据结构和算法(源码)

    Java的`java.util.HashMap`和`java.util.LinkedHashMap`是常见的哈希表实现。 8. 栈和队列的变种:例如,堆(优先队列)提供了按优先级排序的队列,Java的`java.util.PriorityQueue`实现了这个功能。 接下来,我们...

    javajdk1.8源码-Java-source-reading:jdk1.8源代码分析

    缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 限于个人水平出现的解读错误 编辑错误 排版不统一 如发现有错,欢迎指正! 如果对你有用,...

    基于Java的实例源码-Java缓存工具 SimpleCache.zip

    总的来说,"基于Java的实例源码-Java缓存工具 SimpleCache.zip"是一个宝贵的教育资源,为Java开发者提供了实际操作缓存机制的机会,从而提升他们的技能和理解,对于那些希望优化应用程序性能或构建高效服务的开发者...

    java算法大全最新完整无错版(含源码包)

    Java算法大全是一个全面涵盖近100种算法的资源包,专为Java程序员设计,旨在帮助他们提升在...这个源码包是一个宝贵的资源,可以帮助学习者直观地了解和掌握各种算法的实现细节,同时为实际项目中的问题解决提供参考。

    java源码结构-data-structures-java:数据结构源代码

    在这个名为"java源码结构-data-structures-java:数据结构源代码"的项目中,我们可以看到一个开源的Java实现,涵盖了多种经典的数据结构。这个项目可能是某个课程或教程的配套资源,旨在帮助学习者深入理解数据结构的...

    Java基础学习25.pdf

    根据提供的文件信息,以下是关于Java基础学习的知识点总结: ### Java基础概念 1. **Set接口概述**:Set接口的特性是无序(元素插入顺序不保留)和不可重复(不允许出现重复元素)。它是Java集合框架的一部分,...

    高速缓存实现源码

    通过深入研究这个项目的源码,我们可以学习如何在Java中高效地实现高速缓存,以及如何利用并发优化性能。这对于开发高性能、高并发的应用程序是非常有价值的。同时,理解并掌握缓存的原理和实践,对于提升软件系统的...

    LRU_缓存策略_LRU_缓存.zip

    Java中,可以使用`java.util.LinkedHashMap`类,通过设置`accessOrder`为`true`来实现LRU缓存。Python中,有第三方库`functools.lru_cache`提供了内置的LRU缓存功能。在C++中,可以自定义数据结构来实现LRU缓存。 ...

    自己写的一个随机数的例子,采用hashmap排序

    在Java中,我们可以使用`java.util.Random`类来生成随机数。这个类提供了多种方法,如`nextInt()`用于生成指定范围内的整数,`nextDouble()`用于生成0到1之间的双精度浮点数等。要创建一个Random对象,只需调用`new ...

    实现了LRU算法的缓存

    可以使用`synchronized`关键字或者`java.util.concurrent`包中的工具,如`ConcurrentHashMap`来实现线程安全的缓存操作。 6. **性能优化**: - 使用`WeakReference`或`SoftReference`可以避免内存泄漏,尤其是在...

    TreeNode-SourceCode.7z

    而`TreeNode`类是`HashMap8`(通常指的是`java.util.HashMap`的早期版本,8可能是其内部版本号)中的一个关键内部类,它用于实现哈希表的红黑树结构。当`HashMap`中的元素数量超过特定阈值时,为了保持性能,`...

    dataStructure

    数据结构是计算机科学中的核心概念,它涉及到如何...这个"**dataStructure-master**"可能包含了上述数据结构的Java实现源码,通过学习和实践这些代码,可以深入理解数据结构的工作原理,并能熟练地应用到实际编程中。

Global site tag (gtag.js) - Google Analytics