HashMap详解

前端之家收集整理的这篇文章主要介绍了HashMap详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<span style="font-size:14px;">
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html" rel="nofollow" title="class in java.lang" style="text-decoration:none;color:rgb(76,107,135);">java.lang.Object
<ul class="inheritance" style="list-style-type:disc;">
<li style="display:inline;list-style:none;">
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html" rel="nofollow" title="class in java.util" style="text-decoration:none;color:rgb(76,135);">java.util.AbstractMap<K,V>
<li style="display:inline;list-style:none;">
<ul class="inheritance" style="list-style-type:disc;"><li style="display:inline;list-style:none;">java.util.HashMap<K,V>

方法的执行时间为常数级的,因为我们假定了Map中的元素已经按照哈希功能分开存储。HashMap在扩展自身容量时,基于集合视图的迭代是要发费一定比例时间的。因此如果迭代功能很重要的话,不要把初始容量大小设置太高的做法是很重要的。

属性。容量是哈希表中哈希元的数量,初始容量就是哈希表创建时的容量,载入属性是一种决定方式,该方式确定了在HashTable自动增长容量之前是如何判定HashTable中元素是否已满。当哈希表的入口数多于载入属性的实例和其当前容量时,HashTable会重新执行其哈希功能(也就是说,内部数据结构会被重新创建)以便哈希表的哈希元能够变为大约原来的两倍。

属性都会在时间和空间上有一个很好的权衡。较高的值会降低使用空间但也会增加查表成本(会影响HashMap大部分的操作,包括get和put方法)。在开始设置容量时,应充分考虑到Map的进入元素数和载入属性,以便将哈希功能重构次数最小化,如果初始化容量大于根据载入属性而进入Map中的元素数,那么重构哈希功能将不会出现。

自动增长大小。

修改了HashMap的结构,它在外面看起来一定是要同步的(结构改变包括添加删除一个或者多个映射,仅仅改变某个键对应的值不算是结构改变),这通常由同步一些包含Map的对象来完成。如果这样的对象不存在,那么我们需要通过Collections.synchronizedMap方法来将其包裹在内。这最好在创建时就执行,以阻止发生一些不必要的事情:

次数是实效很迅速的:在迭代创建后的如果集合set发生修改,除了通过迭代器自身的remove方法外的其它任何方法,迭代会抛出异常修改元素而言,迭代会迅速且全部失效,而不是冒险去出现一些在未来某时不确定的行为。

<p style="font-family:Arial;">

fail-fast特性不能保证,正如在非同步化修改中做保证也是不可能的。fail-fast迭代次数会在被动的尽力的基础上抛出 ConcurrentModificationException异常。因此,写一个依赖此异常来判定其正确性的程序的想法是错误的:迭代器里的fail-fast

方法:

()
()
 instance: the keys and values themselves are not cloned.
( key)
 if this map contains a mapping for the specified key.
( value)
 if this map maps one or more keys to the specified value.
<
<,>> ()
 view of the mappings contained in this map.
( key)
 if this map contains no mapping for the key.
()
 if this map contains no key-value mappings.
<
> ()
 view of the keys contained in this map.
( key,  value)

猜你在找的Java相关文章