加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 交互 > 正文

Java HashMap的工作原理

发布时间:2020-12-31 22:33:37 所属栏目:交互 来源:网络整理
导读:副标题#e# 面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,
副标题[/!--empirenews.page--]

面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的。

我们来看个非常简单的例子。有一个”国家”(Country)类,我们将要用Country对象作为key,它的首都的名字(String类型)作为value。下面的例子有助于我们理解key-value对在HashMap中是如何存储的。

1.?Country.java

<span class="hljs-keyword">long population;

<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">Country<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">(String name,<span class="hljs-keyword"><span class="hljs-function"><span class="hljs-params"><span class="hljs-keyword">long<span class="hljs-function"><span class="hljs-params"> population)<span class="hljs-function"> {
<span class="hljs-keyword">super();
<span class="hljs-keyword">this.name = name;
<span class="hljs-keyword">this.population = population;
}
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> String <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">getName<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">()<span class="hljs-function"> {
<span class="hljs-keyword">return name;
}
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">void<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">setName<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">(String name)<span class="hljs-function"> {
<span class="hljs-keyword">this.name = name;
}
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">long<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">getPopulation<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">()<span class="hljs-function"> {
<span class="hljs-keyword">return population;
}
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">void<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">setPopulation<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">(<span class="hljs-keyword"><span class="hljs-function"><span class="hljs-params"><span class="hljs-keyword">long<span class="hljs-function"><span class="hljs-params"> population)<span class="hljs-function"> {
<span class="hljs-keyword">this.population = population;
}

<span class="hljs-comment">// If length of name in country object is even then return 31(any random number) and if odd then return 95(any random number).
<span class="hljs-comment">// This is not a good practice to generate hashcode as below method but I am doing so to give better and easy understanding of hashmap.
<span class="hljs-meta">@Override
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">int<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">hashCode<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">()<span class="hljs-function"> {
<span class="hljs-keyword">if(<span class="hljs-keyword">this.name.length()%<span class="hljs-number">2==<span class="hljs-number">0)
<span class="hljs-keyword">return <span class="hljs-number">31;
<span class="hljs-keyword">else
<span class="hljs-keyword">return <span class="hljs-number">95;
}
<span class="hljs-meta">@Override
<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">public<span class="hljs-function"> <span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">boolean<span class="hljs-function"> <span class="hljs-title"><span class="hljs-function"><span class="hljs-title">equals<span class="hljs-params"><span class="hljs-function"><span class="hljs-params">(Object obj)<span class="hljs-function"> {

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读