1.什么叫hashmap?

答:首先是一种map集合,其次呢,它是一种利用hash表来存储的数据结构。所以叫hashmap.

2.hashmap的特点是什么?

答:hashmap的特点是key值不能重复,否则根据key,可以读取到多个对应的value了啊。

3.那么怎么保证map的key不能重复呢?

答:很简单,利用hashcode值是每个对象的一种状态这个属性来区分每个一个对象就行了嘛。

hashcode值是每个对象的一种状态值。

利用hash算法来计算得出的一种码值,hash算法要传入参数,这个传入的不同参数,决定了hashcode值得最终结果啊。

比如,string,Integer这种封装类,已经重写了hashcode()这个方法,指定了利用string/integer具体的内容来进行hashcode算法传参。

所以string值一样,那么这几个string对象的hashcode值夜一样。

这就可以将string作为map的key啊,保证了key不重复。因为hashmap,底层实现原理是判断传入key的hashcode值来防止重复对象的。

4.而普通Object类,默认的计算hacode值得方法hashcode()默认将对象的内存地址传参,进行hashcode值计算的。每个对象的内存地址当然都不一样啊,所以hasshcode也都不一样。即使内容相同的两个对象,由于内存地址不一样,而默认的hashcode()方法是计算内存地址传参的,也造成 了,依然可以放入hashmap中。

彻底来理解下hashmap吧的更多相关文章

  1. 轻松理解 Java HashMap 和 ConcurrentHashMap

    前言 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据. 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 ...

  2. 多线程下HashMap的死循环问题

    多线程下[HashMap]的问题: 1.多线程put操作后,get操作导致死循环.2.多线程put非NULL元素后,get操作得到NULL值.3.多线程put操作,导致元素丢失. 本次主要关注[Has ...

  3. 深刻理解下js的prototype

    参考 http://aralejs.org/class/docs/competitors.html, http://www.iteye.com/topic/248933,http://www.cnbl ...

  4. 并发场景下HashMap死循环导致CPU100%的问题

    参考链接:并发场景下HashMap死循环导致CPU100%的问题

  5. 多线程下HashMap的死循环是如何产生的

    前言 HashMap不是线程安全的,如果需要在多线程环境中使用Map,那么我们可以使用ConcurrentHashmap. 1.举例说明: package com.test; import java. ...

  6. 是时候理解下HTTPS的原理及流程了

    1.什么是HTTP协议? HTTP协议是Hyper Text Transfer Protocol(超文本传输协议),位于TCP/IP模型当中的应用层.HTTP协议通过请求/响应的方式,在客户端和服务端 ...

  7. 多线程情况下HashMap死循环的问题

    1.多线程put操作后,get操作导致死循环. 2.多线程put非null元素后,get操作得到null值. 3.多线程put操作,导致元素丢失. 死循环场景重现 下面我用一段简单的DEMO模拟Has ...

  8. 关于new HashMap<>(1)中1的理解(hashMap的加载因子)

    新入公司,阅读代码的时候发现了一行代码,为 Map<String, String> map=new HashMap<>(1); 对于这个括号里面的1不能理解,于是查了资料,大概 ...

  9. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了Android中Vi ...

随机推荐

  1. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  2. 解决VS2010警告unsuccessfulbuild”,因为已指定“AlwaysCreate”

    找到文件C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets: 定位到<Touch Alway ...

  3. webpack3整理(第二节/满三节)

    消除未使用的CSS:安装PurifyCSS-webpack插件 cnpm i purifycss-webpack purify-css -D const glob = require('glob'); ...

  4. pil - pillow 的版本

    pip install  PIL        python2版本 pip install  pillow      python3版本

  5. CAD插入背景图片(网页版)

    把图片作为背景图片可见但是不能编辑操作. 主要用到函数说明: _DMxDrawX::DrawImageToBackground 绘光栅图到背景.详细说明如下: 参数 说明 BSTR sFileName ...

  6. C# html table转excel

    1. protected void ebtDC_Click(object sender, EventArgs e) { string elxStr = "<table><t ...

  7. A10. JVM 对象

    [概述] 首先需要了解对象在内存中的存储布局,其次需要了解对对象的访问定位. [对象的内存布局] 在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为 3 块区域:对象头(Header).实例 ...

  8. Spring Cloud和Dubbo的对比

  9. [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)

    最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为5个中文字词,输出为一个中文字词. 目录 关于RNN 语料预处理 搭建数据集 ...

  10. 零基础入门学习Python(12)--列表:一个打了激素的数组(3)

    前言 这节课我们继续谈一下Python列表一些知识 知识点 Python常用操作符 比较操作符 >>> list1 = [123] >>> list2 = [234 ...