- 浏览: 29159 次
- 性别:
- 来自: 北京
最新评论
java.util.HashMap:
table数组中存放的是单向链表Entry,Entry中存放的实际数据,一个链表中可能有多个数据,由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位,就是利用了这一特点。不需要对所有数据进行迭代,利用key的hashCode快速找到“桶位”,然后只在桶位中单向链表中的少量数据中进行迭代,所以速度很快。通过由key生成的hash码,可以找到table数组中对应的单向链表Entry,然后在Entry中找到对应的key,从而取出value。
HashMap中重要的字段:
1. DEFAULT_INITIAL_CAPACITY
默认的table数组大小,如果没有通过构造函数指定则table数组的大小使用此值
2. MAXIMUM_CAPACITY
数组table的最大容量
3. DEFAULT_LOAD_FACTOR
默认的装载因子,如果没有指定则使用此值
4. Entry[] table
存放Entry的数组,以hash码作为下标
5. int size
hashMap的大小
6. int threshold
阈值,hashMap存放内容数量的临界点,当存放量大于这个值的时候,就需要将table进行扩张,新建一个两倍大的数组,并将老的元素移过去。threshold = (int)(capacity * loadFactor)
7. float loadFactor
装载因子,实际存放量/capacity容量的比值
8. int modCount
记录hashMap结构变化的次数,使用在hashMap的fail-fast机制中(当某个线程获取map的游标后,另一个线程对map做了结构修改的操作,那么原先准备遍历的线程会抛出ConcurrentModificationException异常)
HashMap的构造函数:
1. HashMap(int initialCapacity, float loadFactor)
使用指定的初始容量,和装载因子构造hashMap。如果initialCapacity<0或loadFactor<=0或loadFactor是非法的浮点类型时抛出IllegalArgumentException异常。当initialCapacity> MAXIMUM_CAPACITY时初始容量等于MAXIMUM_CAPACITY。hashMap的容量必须是2的倍数,所以实际的初始容量会可能会大于initialCapacity。
2. HashMap(int initialCapacity)
使用指定的初始容量,装载因子为DEFAULT_LOAD_FACTOR。
3. HashMap()
初始容量和装载因子均为默认值
4. HashMap(Map<? extends K, ? extends V> m)
从现有的map构造新的hashMap。
table数组中存放的是单向链表Entry,Entry中存放的实际数据,一个链表中可能有多个数据,由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位,就是利用了这一特点。不需要对所有数据进行迭代,利用key的hashCode快速找到“桶位”,然后只在桶位中单向链表中的少量数据中进行迭代,所以速度很快。通过由key生成的hash码,可以找到table数组中对应的单向链表Entry,然后在Entry中找到对应的key,从而取出value。
HashMap中重要的字段:
1. DEFAULT_INITIAL_CAPACITY
默认的table数组大小,如果没有通过构造函数指定则table数组的大小使用此值
2. MAXIMUM_CAPACITY
数组table的最大容量
3. DEFAULT_LOAD_FACTOR
默认的装载因子,如果没有指定则使用此值
4. Entry[] table
存放Entry的数组,以hash码作为下标
5. int size
hashMap的大小
6. int threshold
阈值,hashMap存放内容数量的临界点,当存放量大于这个值的时候,就需要将table进行扩张,新建一个两倍大的数组,并将老的元素移过去。threshold = (int)(capacity * loadFactor)
7. float loadFactor
装载因子,实际存放量/capacity容量的比值
8. int modCount
记录hashMap结构变化的次数,使用在hashMap的fail-fast机制中(当某个线程获取map的游标后,另一个线程对map做了结构修改的操作,那么原先准备遍历的线程会抛出ConcurrentModificationException异常)
HashMap的构造函数:
1. HashMap(int initialCapacity, float loadFactor)
使用指定的初始容量,和装载因子构造hashMap。如果initialCapacity<0或loadFactor<=0或loadFactor是非法的浮点类型时抛出IllegalArgumentException异常。当initialCapacity> MAXIMUM_CAPACITY时初始容量等于MAXIMUM_CAPACITY。hashMap的容量必须是2的倍数,所以实际的初始容量会可能会大于initialCapacity。
2. HashMap(int initialCapacity)
使用指定的初始容量,装载因子为DEFAULT_LOAD_FACTOR。
3. HashMap()
初始容量和装载因子均为默认值
4. HashMap(Map<? extends K, ? extends V> m)
从现有的map构造新的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 2092java.util.concurrent.Concurrent ... -
java.util.LinkedHashMap源码学习(二)
2011-02-01 11:20 1496LinkedHashMap中重要的方法: 1. void c ... -
java.util.LinkedHashMap源码学习(一)
2011-02-01 11:19 1220java.util.LinkedHashMap: Linke ... -
java.util.HashMap源码学习(二)
2011-02-01 11:17 1012HashMap中重要的方法: 1. public V put ...
相关推荐
通过研究`java.util`和NIO的源码,我们可以提升对Java语言的理解,学习到更多高级特性和最佳实践,这对于任何Java开发者来说都是一笔宝贵的财富。无论是为了优化性能,还是为了提升代码质量,对这些核心组件的深入...
总的来说,深入研究Java rt.jar源码对于Java开发者来说是一项重要的学习任务。通过理解rt.jar中的源码,我们可以更深入地了解Java平台的工作原理,提高编程技巧,解决实际问题,同时也能为设计和实现高效、可靠的...
Java.util 源码分析 Java.util 包是 Java 核心库的重要组成部分,它包含了许多用于日常编程的工具类和接口,如集合框架、日期时间处理、随机数生成、事件处理等。深入理解这个包的源码对于提升Java开发者的技能至关...
在Java编程语言中,`java.util`包是核心库的一部分,包含了大量用于处理日常编程任务的类和接口。这个源码分析将深入探讨`java.util`包中的关键组件,了解它们的工作原理,这对于任何Java开发者来说都是至关重要的。...
10. **映射(Map)**:映射将一个键映射到一个值,不允许键重复,如`java.util.Map`接口和`java.util.HashMap`、`java.util.TreeMap`等实现。 这些源代码和说明对于学习和理解数据结构的实现原理非常有帮助。通过...
在Java编程语言中,`java.util`包是核心库的一部分,包含了大量用于处理日常编程任务的类和接口。这个包提供了各种数据结构(如ArrayList、LinkedList、HashSet、HashMap)、集合框架、日期时间处理、事件模型、...
通过分析Java数据结构源码,开发者可以学习到如何优化内存管理,减少不必要的空间开销,以及如何设计高效算法来处理复杂的数据操作。在日常开发中,结合具体业务场景选择合适的数据结构,能显著提高程序性能,降低...
8. 国际化与本地化:`java.text`和`java.util.Locale`提供了国际化支持,通过源码可以学习如何处理不同地区的语言和格式。 通过阅读和理解rt.jar的源码,不仅可以提高我们的编程技能,还能使我们对Java平台的工作...
源码学习能揭示队列和双端队列的实现细节,比如offer、poll等方法的逻辑。 6. **Comparator**: 接口用于定制比较规则,可以自定义排序逻辑。源码分析可以帮助我们理解其比较过程,以及如何与其他数据结构(如...
2. **集合框架**:`java.util`包中的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等数据结构的实现,这些是日常编程中最常用的工具。源码可以帮助理解它们的性能特性,比如插入、删除、查找的时间复杂度。 3. ...
Java util是Java编程语言中的一个核心包,包含了各种通用的工具类,对于任何Java开发者来说,理解和掌握这个包中的类和方法都是非常基础且重要的。在Java的util包中,我们可以找到许多用于处理集合、日期时间、...
此外,`java.util.ArrayList`和`java.util.HashMap`等集合框架的实现,揭示了它们在存储和检索元素时的性能优化策略。 二、Lambda表达式与函数式编程 JDK 1.8引入了Lambda表达式,这是一种简洁的函数式编程语法,...
在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.util`包中的各种集合类,如ArrayList、HashMap,展现了数据结构和算法的应用。这些都是软件工程师日常工作中不可或缺的知识。 再次,JAVA源码中的异常处理和错误报告机制,如`java.lang.Throwable`及其子类,...
Java的`java.util.HashMap`和`java.util.LinkedHashMap`是常见的哈希表实现。 8. 栈和队列的变种:例如,堆(优先队列)提供了按优先级排序的队列,Java的`java.util.PriorityQueue`实现了这个功能。 接下来,我们...