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

java.util.HashMap源码学习(二)

阅读更多
HashMap中重要的方法:

1. public V put(K key, V value)
HashMap中允许key为null,当key为null时,调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null,利用key计算hash码,从而得到对应的table下标,如果Entry<K,V> e = table[i]已经存在,则更新e.value,如果Entry<K,V> e = table[i]不存在,modCount加1,记录结构变化,调用void addEntry(int hash, K key, V value, int bucketIndex)增加新的Entry。
2. public V get(Object key)
当key为null时,调用private V getForNullKey(),从table[0]取出Entry得到对应key==null的value。如果key不为null,则根据hash码快不跳到数组的某个位置,只对很少的元素进行比较,这就是HashMap速度很快的原因。
3. void resize(int newCapacity)
根据指定的newCapacity值调整table的大小
4. void transfer(Entry[] newTable)
将当前table中的内容转移到新的newTable中

5. public void putAll(Map<? extends K, ? extends V> m)
将指定的map复制到当前map中。如果指定的map的大小超过当前map的阈值时,会调用resize()方法调整table的大小。

6. public V remove(Object key)
从当前hashMap中删除指定的key。

7. public void clear()
清空当前hashmap

8. public boolean containsKey(Object key)
是否存在指定key


9. public boolean containsValue(Object value)
是否存在指定的值

10. public boolean isEmpty()
是否为空

11. public int size()
当前hashmap的大小
1
1
分享到:
评论

相关推荐

    java.util包源码pdf版

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

    java.util源码-Java.util-NIO-Source-code:基本输入和输出,包括带有NIO源代码的java.util读取文件

    通过研究`java.util`和NIO的源码,我们可以提升对Java语言的理解,学习到更多高级特性和最佳实践,这对于任何Java开发者来说都是一笔宝贵的财富。无论是为了优化性能,还是为了提升代码质量,对这些核心组件的深入...

    Java rt.jar源码

    `java.util`包则包括了各种实用工具类和集合类,如`ArrayList`、`HashMap`等。 为了查看rt.jar的源码,开发者通常需要下载OpenJDK源码或者使用IDE(如Eclipse、IntelliJ IDEA)的特殊功能来关联源码。例如,Eclipse...

    java.util源码-java-source-code:java.util源码阅读

    Java.util 源码分析 Java.util 包是 Java 核心库的重要组成部分,它包含了许多用于日常编程的工具类和接口,如集合框架、日期时间处理、随机数生成、事件处理等。深入理解这个包的源码对于提升Java开发者的技能至关...

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

    这个源码分析将深入探讨`java.util`包中的关键组件,了解它们的工作原理,这对于任何Java开发者来说都是至关重要的。`java.util`包包括集合框架、日期时间API、事件模型、散列映射、队列、栈、优先队列、随机数生成...

    java.util源码-sourcecode:utilJava代码

    源码分析是程序员提升能力的有效方式,它允许我们深入探究Java类库的内部机制,学习设计模式和最佳实践。对于`java.util`源码的探索,我们可以重点关注以下几个方面: 1. **集合框架**:Java集合框架包括List、Set...

    Java rt.jar 源码分析

    8. 国际化与本地化:`java.text`和`java.util.Locale`提供了国际化支持,通过源码可以学习如何处理不同地区的语言和格式。 通过阅读和理解rt.jar的源码,不仅可以提高我们的编程技能,还能使我们对Java平台的工作...

    数据结构源码

    10. **映射(Map)**:映射将一个键映射到一个值,不允许键重复,如`java.util.Map`接口和`java.util.HashMap`、`java.util.TreeMap`等实现。 这些源代码和说明对于学习和理解数据结构的实现原理非常有帮助。通过...

    java数据结构源码

    通过分析Java数据结构源码,开发者可以学习到如何优化内存管理,减少不必要的空间开销,以及如何设计高效算法来处理复杂的数据操作。在日常开发中,结合具体业务场景选择合适的数据结构,能显著提高程序性能,降低...

    javajdk源码-java.util_source_learning:学习JDK源代码

    源码学习能揭示队列和双端队列的实现细节,比如offer、poll等方法的逻辑。 6. **Comparator**: 接口用于定制比较规则,可以自定义排序逻辑。源码分析可以帮助我们理解其比较过程,以及如何与其他数据结构(如...

    jdk1.8 rt.jar 源码

    2. **集合框架**:`java.util`包中的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等数据结构的实现,这些是日常编程中最常用的工具。源码可以帮助理解它们的性能特性,比如插入、删除、查找的时间复杂度。 3. ...

    jdk1.8.0_131源码: src.jar

    此外,`java.util.ArrayList`和`java.util.HashMap`等集合框架的实现,揭示了它们在存储和检索元素时的性能优化策略。 二、Lambda表达式与函数式编程 JDK 1.8引入了Lambda表达式,这是一种简洁的函数式编程语法,...

    Java util

    Java util是Java编程语言中的一个核心包,包含了各种通用的工具类,对于任何Java开发者来说,理解和掌握这个包中的类和方法都是非常基础且重要的。在Java的util包中,我们可以找到许多用于处理集合、日期时间、...

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

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

    java源码文档src

    `java.util`包下的`List`、`Set`、`Map`等接口以及它们的实现类,如`ArrayList`、`HashMap`等,构成了Java集合框架。源码解析可以帮助我们理解这些数据结构的内部实现,优化数据存储和操作。 8. **网络编程** `...

    Java SDK源代码

    2. **集合框架**:在`java.util`包中,集合框架是Java SDK的一个重要部分,它包含`List`, `Set`, `Map`等接口,以及对应的实现类,如`ArrayList`, `HashSet`, `HashMap`等。这些数据结构提供了存储和操作对象的方法...

    jdk源码学习

    源码学习是提升编程技能的重要途径,通过深入理解JDK源码,我们可以洞察Java语言的内部机制,掌握其设计思想,并学习到优秀的编程实践。 在JDK源码中,有许多关键的组件和类库,如: 1. **虚拟机(JVM)**:Java...

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

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

    Mining_JAVA源码_源码.zip

    `java.util`包中的各种集合类,如ArrayList、HashMap,展现了数据结构和算法的应用。这些都是软件工程师日常工作中不可或缺的知识。 再次,JAVA源码中的异常处理和错误报告机制,如`java.lang.Throwable`及其子类,...

Global site tag (gtag.js) - Google Analytics