文档章节

HashMap之微代码解析-总结整理

指尖Coding
 指尖Coding
发布于 2016/08/13 11:47
字数 414
阅读 6
收藏 0
点赞 0
评论 0

1.HashMap继承AbstractMap类,实现Map接口。key和value都允许为null,非线程安全。

2.HashMap底层是使用数组和链表实现的,当new一个HashMap的时候,jvm就会初初始化一个数组。

3.HashMap的put方法是,现根据key计算hashcode,根据hashcode计算该元素在数组中的位置,数组的内容是一个链表(链表有next节点)。

4.哈系运算会有重复的哈希值,对于哈希值的冲突,HashMap采用链表(挂链)来解决的。

数组存储的是链表,链表是为了解决哈希冲突的。

/**
* next就是为了哈希冲突而存在的。比如通过哈希运算,一个新元素应该在数组的第10个位置,
* 但是第10个位置已经有Entry,那么好吧,将新加的元素也放到第10个位置,将第10个位置的
* 原有Entry赋值给当前新加的 Entry的next属性。数组存储的是链表,链表是为了解决哈希冲突的。
*
*/
static class Entry<K,V> implements Map.Entry<K,V> {    
     final K key;    
     V value;    
     Entry<K,V> next;    
     int hash;    
}    

5.当两个对象的hashcode相同会发生什么?

因为hashcode相同,所以它们的存储数组位置相同,‘碰撞’会发生。因为HashMap使用LinkedList存储对象,这个Entry(包含有键值对的Map.Entry对象)会存储在LinkedList中。

6.如果两个键的hashcode相同,你如何获取值对象?

根据hashcode找到数组位置,然后遍历LinkedList直到找到值对象,HashMap在链表LinkedList中存储的是键值对。

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
指尖Coding
粉丝 1
博文 51
码字总数 37092
作品 0
静安
一篇文章,全面总结Android面试知识点

本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在G...

Ruheng ⋅ 2017/10/17 ⋅ 0

一篇文章,全面总结Android面试知识点

本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在G...

Ruheng ⋅ 2017/10/17 ⋅ 0

Java集合 --- LinkedHashMap底层实现和原理(源码解析)

概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明。 LinkedHashMap,见...

起个名忒难 ⋅ 2017/09/24 ⋅ 0

Java 集合系列目录(Category)

Java 集合系列目录(Category) 下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录。 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系列03之 Arra...

foxeye ⋅ 2016/02/29 ⋅ 0

LinkedHashMap了解一下

前言 LinkedHashMap类继承图 LinkedHashMap简述 LinkedHashMap的属性 LinkedHashMap的构造函数 LinkedHashMap常见Api解析 总结 前言 本文使用用的是jdk1.8 LinkedHashMap类继承图 我们先来了...

HikariCP ⋅ 05/11 ⋅ 0

snort 中的规则解析框架(二)

简介 snort中配置文件的处理是一个很重要的部分,因为其不仅是数据的读取过程更是snort初始结构的搭建过程 前面已经对snort解析单个文件做了代码分析. 链接:http://my.oschina.net/u/572632...

面码 ⋅ 2014/07/10 ⋅ 0

面经整理资料1

面经资料来源:http://www.nowcoder.com/discuss/3836 阿里实习 Java研发 一面 (1)JVM如何加载一个类的过程,双亲委派模型中有哪些方法? 类的生命周期:加载、(验证、准备、解析)链接、...

Hosee ⋅ 2016/04/04 ⋅ 6

面试整理-Java综合高级篇(吐血整理)

Java面试总结 交流或更多内容请关注我的公众号:nezha_blog 我的技术博客:https://nezha.github.io 微信公众号 1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问...

哪吒小子 ⋅ 2017/12/11 ⋅ 1

Java开发

JVM 内存溢出实例 - 实战 JVM(二) 介绍 JVM 内存溢出产生情况分析 Java - 注解详解 详细介绍 Java 注解的使用,有利于学习编译时注解 Java 程序员快速上手 Kotlin 11 招 这篇文章主要是写给...

掘金官方 ⋅ 01/04 ⋅ 0

snort 中的IP集合解析

简介 前面总结了snort在读取配置文件时的总体流程,这里选择较为重要且相对有价值的细节部分进行分析,snort的IP串解析方式. 因为snort支持[ ]形成IP集合并且支持使用'!'取反,因此可能构成如...

面码 ⋅ 2014/07/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部