40道Java基础常见面试题及详细答案
发布时间:2021-01-02 02:06:49 所属栏目:运营 来源:网络整理
导读:最近看到网上传播着各类口试履历及口试题,每每都是一大堆技能标题贴上去,可是没有谜底。 为此我业余时刻清算了40道Java基本常见的口试题及具体谜底,望各路大牛发明差池的处所不惜见教,留言即可。 八种根基数据范例的巨细,以及他们的封装类 引用数据范例
HashTable Synchronize同步的,线程安详,HashMap不应承空键值为空?,服从低。 HashMap 非Synchronize线程同步的,线程不安详,HashMap应承空键值为空?,服从高。?Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,它们都是荟萃中将数据无序存放的。 Hashtable的要领是同步的,HashMap未经同步,以是在多线程场所要手动同步HashMap这个区别就像Vector和ArrayList一样。 查察Hashtable的源代码就可以发明,除结构函数外,Hashtable的全部 public 要领声明中都有 synchronized 要害字,而HashMap的源代码中则连 synchronized 的影子都没有,虽然,注释除外。 2、Hashtable不应承 null 值(key 和 value 都不行以),HashMap应承 null 值(key和value都可以)。 3、两者的遍历方法大同小异,Hashtable仅仅比HashMap多一个elements要领。 |
从内部机制实现上的区别如下:
- 哈希值的行使差异,Hashtable直接行使工具的hashCode
而HashMap从头计较hash值,并且用与取代求模:
?
??
?
>>?
>>?
?
<div class="cnblogs_Highlighter sh-gutter">
<div id="highlighter_415506" class="syntaxhighlighter java">
<table border="0" cellspacing="0" cellpadding="0"><tr>
<td class="gutter">
<div class="line number1 index0 alt2">1
<div class="line number2 index1 alt1">2
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="java keyword">static?<code class="java keyword">int?<code class="java plain">indexFor(<code class="java keyword">int?<code class="java plain">h,?<code class="java keyword">int?<code class="java plain">length) {
?
Hashtable中hash数组默认巨细是11,增进的方法是 old*2+1。HashMap中hash数组的默认巨细是16,并且必然是2的指数。
JDK7中的HashMap
HashMap底层维护一个数组,数组中的每一项都是一个Entry。
[] table;
我们向 HashMap 中所安排的工具现实上是存储在该数组傍边。 而Map中的key,value则以Entry的情势存放在数组中。
??
? {
?
next;
?
总结一下map.put后的进程:
当向 HashMap 中?put 一对键值时,它会按照 key的 hashCode 值计较出一个位置, 该位置就是此工具筹备往数组中存放的位置。
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
相关内容