HashMap深度解析(一)

public V put(K key, V value) {// 处理key为null,HashMap允许key和value为nullif (key == null)return putForNullKey(value);// 得到key的哈希码int hash = hash(key);// 通过哈希码计算出bucketIndexint i = indexFor(hash, table.length);// 取出bucketIndex位置上的元素,并循环单链表,判断key是否已存在for (Entry<K,V> e = table[i]; e != null; e = e.next) {Object k;// 哈希码相同并且对象相同时if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {// 新值替换旧值,并返回旧值V oldValue = e.value;e.value = value;e.recordAccess(this);return oldValue;}}// key不存在时,,加入新元素modCount++;addEntry(hash, key, value, i);return null;} 到这里,我们了解了HashMap工作原理的一部分,那还有另一部分,如,加载因子及rehash,HashMap通常的使用规则,多线程并发时HashMap存在的问题等等,这些会留在下一章说明。

莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法

HashMap深度解析(一)

相关文章:

你感兴趣的文章:

标签云: