集合框架
集合框架
Linn01
简约 睿智 敏捷 寻觅 反馈
展开
-
HashMap源码解析——关键属性
HashMap类中的一些关键属性:ttransient Node<K,V>[] table;//存储元素的实体数组transient int size;//存放元素的个数int threshold; //临界值 当实际大小超过临界值时,会进行扩容threshold = 加载因子*容量final float loadFactor; //加载因子transient int modCount;原创 2017-07-22 22:24:34 · 3135 阅读 · 0 评论 -
HashMap源码解析——构造方法
上篇博文列取了HashMap的关键属性,本篇主要看构造方法HashMap的几个构造方法: 补充下//加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; //容量 static final int MAXIMUM_CAPACITY = 1 << 30; static final int MIN_TREEIFY_CAPACITY = 6原创 2017-07-22 22:53:42 · 2497 阅读 · 0 评论 -
HashMap源码解析——put方法
public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }先看hash(key)函数。它是通过key的hashCode值计算hash码。//计算hash值的方法 通过键的hashCode来计算static final int hash(Object key) {原创 2017-07-23 16:39:10 · 5198 阅读 · 0 评论 -
HashMap源码解析——get方法
public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value; }getNode()方法 final Node<K,V> getNode(int hash, Object key) { Node<K,V>原创 2017-07-23 16:51:44 · 10265 阅读 · 0 评论 -
HashMap源码解析——概述
HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchro原创 2017-07-21 09:01:16 · 10219 阅读 · 0 评论 -
HashSet源码解析
HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成。HashSet的源原创 2017-07-23 17:19:38 · 4670 阅读 · 0 评论