- 浏览: 29164 次
- 性别:
- 来自: 北京
最新评论
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. 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的大小
发表评论
-
asdfasfd
2014-04-12 17:11 625http://www.laomaotao.net/?H9197 ... -
工木rrrr
2012-12-20 20:33 0工工工工工工工工 -
http://yiminghe.iteye.com/blog/291126
2011-10-13 18:04 0http://yiminghe.iteye.com/blog/ ... -
java.util.concurrent.Executors源码学习(三)
2011-02-01 11:43 1327Executors中的重要方法(续): 8. Schedu ... -
java.util.concurrent.Executors源码学习(二)
2011-02-01 11:41 1286Executors中的重要方法(续): 5. Executo ... -
java.util.concurrent.Executors源码学习(一)
2011-02-01 11:39 1773java.util.concurrent.Executors: ... -
java.util.concurrent.ExecutorService(二)
2011-02-01 11:37 1323ExecutorService中重要的方法(续): 6. ... -
java.util.concurrent.ExecutorService(一)
2011-02-01 11:36 2472java.util.concurrent.ExecutorSe ... -
java.util.concurrent.LinkedBlockingDeque源码学习(三)
2011-02-01 11:33 1262LinkedBlockingDeque中的重要方法(续): ... -
java.util.concurrent.LinkedBlockingDeque源码学习(二)
2011-02-01 11:32 1161LinkedBlockingDeque中的重要方法: 1. ... -
java.util.concurrent.LinkedBlockingDeque源码学习(一)
2011-02-01 11:30 2436java.util.concurrent.LinkedBloc ... -
java.util.concurrent.ConcurrentHashMap源码学习(四)
2011-02-01 11:29 1445ConcurrentHashMap中内部类Se ... -
java.util.concurrent.ConcurrentHashMap源码学习(三)
2011-02-01 11:27 1085ConcurrentHashMap中的内部类: 1. sta ... -
java.util.concurrent.ConcurrentHashMap源码学习(二)
2011-02-01 11:24 1181ConcurrentHashMap中重要的方法: 1. V ... -
java.util.concurrent.ConcurrentHashMap源码学习(一)
2011-02-01 11:22 2093java.util.concurrent.Concurrent ... -
java.util.LinkedHashMap源码学习(二)
2011-02-01 11:20 1497LinkedHashMap中重要的方法: 1. void c ... -
java.util.LinkedHashMap源码学习(一)
2011-02-01 11:19 1221java.util.LinkedHashMap: Linke ... -
java.util.HashMap源码学习(一)
2011-02-01 11:09 1138java.util.HashMap: table数组中存放的 ...
相关推荐
通过研究`java.util`和NIO的源码,我们可以提升对Java语言的理解,学习到更多高级特性和最佳实践,这对于任何Java开发者来说都是一笔宝贵的财富。无论是为了优化性能,还是为了提升代码质量,对这些核心组件的深入...
`java.util`包则包括了各种实用工具类和集合类,如`ArrayList`、`HashMap`等。 为了查看rt.jar的源码,开发者通常需要下载OpenJDK源码或者使用IDE(如Eclipse、IntelliJ IDEA)的特殊功能来关联源码。例如,Eclipse...
Java.util 源码分析 Java.util 包是 Java 核心库的重要组成部分,它包含了许多用于日常编程的工具类和接口,如集合框架、日期时间处理、随机数生成、事件处理等。深入理解这个包的源码对于提升Java开发者的技能至关...
这个源码分析将深入探讨`java.util`包中的关键组件,了解它们的工作原理,这对于任何Java开发者来说都是至关重要的。`java.util`包包括集合框架、日期时间API、事件模型、散列映射、队列、栈、优先队列、随机数生成...
源码分析是程序员提升能力的有效方式,它允许我们深入探究Java类库的内部机制,学习设计模式和最佳实践。对于`java.util`源码的探索,我们可以重点关注以下几个方面: 1. **集合框架**:Java集合框架包括List、Set...
8. 国际化与本地化:`java.text`和`java.util.Locale`提供了国际化支持,通过源码可以学习如何处理不同地区的语言和格式。 通过阅读和理解rt.jar的源码,不仅可以提高我们的编程技能,还能使我们对Java平台的工作...
10. **映射(Map)**:映射将一个键映射到一个值,不允许键重复,如`java.util.Map`接口和`java.util.HashMap`、`java.util.TreeMap`等实现。 这些源代码和说明对于学习和理解数据结构的实现原理非常有帮助。通过...
通过分析Java数据结构源码,开发者可以学习到如何优化内存管理,减少不必要的空间开销,以及如何设计高效算法来处理复杂的数据操作。在日常开发中,结合具体业务场景选择合适的数据结构,能显著提高程序性能,降低...
源码学习能揭示队列和双端队列的实现细节,比如offer、poll等方法的逻辑。 6. **Comparator**: 接口用于定制比较规则,可以自定义排序逻辑。源码分析可以帮助我们理解其比较过程,以及如何与其他数据结构(如...
2. **集合框架**:`java.util`包中的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等数据结构的实现,这些是日常编程中最常用的工具。源码可以帮助理解它们的性能特性,比如插入、删除、查找的时间复杂度。 3. ...
此外,`java.util.ArrayList`和`java.util.HashMap`等集合框架的实现,揭示了它们在存储和检索元素时的性能优化策略。 二、Lambda表达式与函数式编程 JDK 1.8引入了Lambda表达式,这是一种简洁的函数式编程语法,...
Java util是Java编程语言中的一个核心包,包含了各种通用的工具类,对于任何Java开发者来说,理解和掌握这个包中的类和方法都是非常基础且重要的。在Java的util包中,我们可以找到许多用于处理集合、日期时间、...
在Java编程语言中,`java.util`包是核心库的一部分,包含了大量用于处理日常编程任务的类和接口。这个包提供了各种数据结构(如ArrayList、LinkedList、HashSet、HashMap)、集合框架、日期时间处理、随机数生成、IO...
`java.util`包下的`List`、`Set`、`Map`等接口以及它们的实现类,如`ArrayList`、`HashMap`等,构成了Java集合框架。源码解析可以帮助我们理解这些数据结构的内部实现,优化数据存储和操作。 8. **网络编程** `...
2. **集合框架**:在`java.util`包中,集合框架是Java SDK的一个重要部分,它包含`List`, `Set`, `Map`等接口,以及对应的实现类,如`ArrayList`, `HashSet`, `HashMap`等。这些数据结构提供了存储和操作对象的方法...
源码学习是提升编程技能的重要途径,通过深入理解JDK源码,我们可以洞察Java语言的内部机制,掌握其设计思想,并学习到优秀的编程实践。 在JDK源码中,有许多关键的组件和类库,如: 1. **虚拟机(JVM)**:Java...
Java的`java.util.HashMap`和`java.util.LinkedHashMap`是常见的哈希表实现。 8. 栈和队列的变种:例如,堆(优先队列)提供了按优先级排序的队列,Java的`java.util.PriorityQueue`实现了这个功能。 接下来,我们...
`java.util`包中的各种集合类,如ArrayList、HashMap,展现了数据结构和算法的应用。这些都是软件工程师日常工作中不可或缺的知识。 再次,JAVA源码中的异常处理和错误报告机制,如`java.lang.Throwable`及其子类,...