副问题[/!--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"> {
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|