﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-wangjieboy</title><link>http://www.cnitblog.com/wangjieboy/</link><description>呼呼虎呼呼</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 10:11:40 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 10:11:40 GMT</pubDate><ttl>60</ttl><item><title>小议HashMap</title><link>http://www.cnitblog.com/wangjieboy/archive/2006/11/10/19047.html</link><dc:creator>huhoo</dc:creator><author>huhoo</author><pubDate>Fri, 10 Nov 2006 08:32:00 GMT</pubDate><guid>http://www.cnitblog.com/wangjieboy/archive/2006/11/10/19047.html</guid><wfw:comment>http://www.cnitblog.com/wangjieboy/comments/19047.html</wfw:comment><comments>http://www.cnitblog.com/wangjieboy/archive/2006/11/10/19047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangjieboy/comments/commentRss/19047.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangjieboy/services/trackbacks/19047.html</trackback:ping><description><![CDATA[
		<dl>
				<dt>
				</dt>
				<pre>public class <strong>HashMap&lt;K,V&gt;</strong><dt>extends <a title="java.util 中的类" href="file:///G:/html_zh_CN/html/zh_CN/api/java/util/AbstractMap.html">AbstractMap</a>&lt;K,V&gt;</dt><dt>implements <a title="java.util 中的接口" href="file:///G:/html_zh_CN/html/zh_CN/api/java/util/Map.html">Map</a>&lt;K,V&gt;, <a title="java.lang 中的接口" href="file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Cloneable.html">Cloneable</a>, <a title="java.io 中的接口" href="file:///G:/html_zh_CN/html/zh_CN/api/java/io/Serializable.html">Serializable</a></dt></pre>
		</dl>
		<pre> </pre>
		<p>
				<font face="Courier New">基于哈希表的 <tt>Map</tt> 接口的实现。此实现提供所有可选的映射操作，并允许使用 <tt>null</tt> 值和 <tt>null</tt> 键。（除了不同步和允许使用 null 之外，<tt>HashMap</tt> 类与 <tt>Hashtable</tt> 大致相同。）此类不保证映射的顺序，特别是它不保证该顺序恒久不变。 </font>
		</p>
		<p>
				<font face="Courier New">此实现假定哈希函数将元素正确分布在各桶之间，可为基本操作（<tt>get</tt> 和 <tt>put</tt>）提供稳定的性能。迭代集合视图所需的时间与 <tt>HashMap</tt> 实例的“容量”（桶的数量）及其大小（键-值映射关系数）的和成比例。所以，如果迭代性能很重要，则不要将初始容量设置得太高（或将加载因子设置得太低）。 </font>
		</p>
		<p>
				<tt>HashMap</tt>
				<font face="Courier New"> 的实例有两个参数影响其性能：<em>初始容量</em> 和<em>加载因子</em>。<em>容量</em> 是哈希表中桶的数量，初始容量只是哈希表在创建时的容量。<em>加载因子</em> 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时，通过调用 <tt>rehash</tt> 方法将容量翻倍。 </font>
		</p>
		<p>
				<font face="Courier New">通常，默认加载因子 (.75) 在时间和空间成本上寻 求一种折衷。加载因子过高虽然减少了空间开销，但同时也增加了查询成本（在大多数 <tt>HashMap</tt> 类的操作中，包括 <tt>get</tt> 和 <tt>put</tt> 操作，都反映了这一点）。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子，以便最大限度地降低 <tt>rehash</tt> 操作次数。如果初始容量大于最大条目数除以加载因子，则不会发生 <tt>rehash</tt> 操作。 </font>
		</p>
		<p>
				<font face="Courier New">如果很多映射关系要存储在 <tt>HashMap</tt> 实例中，则相对于按需执行自动的 rehash 操作以增大表的容量来说，使用足够大的初始容量创建它将使得映射关系能更有效地存储。 </font>
		</p>
		<p>
				<font face="Courier New">
						<strong>注意，此实现不是同步的。</strong>如果多个线程同时访问此映射，而其中至少一个线程从结构上修改了该映射，则它<em>必须</em> 保持外部同步。（结构上的修改是指添加或删除一个或多个映射关系的操作；仅改变与实例已经包含的键关联的值不是结构上的修改。）这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象，则应该使用 <tt>Collections.synchronizedMap</tt> 方法来“包装”该映射。最好在创建时完成这一操作，以防止对映射进行意外的不同步访问，如下所示：</font>
		</p>
		<pre> Map m = Collections.synchronizedMap(new HashMap(...));</pre>
		<pre>
				<p>由所有此类的“集合视图方法”所返回的迭代器都是<em>快速失败</em> 的：在迭代器创建之后，如果从结构上对映射进行修改，<br />除非通过迭代器自身的 <tt>remove</tt> 或 <tt>add</tt> 方法，其他任何时间任何方式的修改，迭代器都将抛出<br /><tt>ConcurrentModificationException</tt>。因此，面对并发的修改，迭代器很快就会完全失败，而不冒在将来不确定<br />的时间任意发生不确定行为的风险。注意，迭代器的快速失败行为不能得到保证，一般来说，存在不同步的并发修改时，<br />不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 <tt>ConcurrentModificationException</tt>。因此，编写依<br />赖于此异常程序的方式是错误的，正确做法是：<em>迭代器的快速失败行为应该仅用于检测程序错误。</em></p>
				<p>此类是 <a href="file:///G:/html_zh_CN/html/zh_CN/guide/collections/index.html">Java Collections Framework</a> 的成员。 </p> 比较HashMap与HashTable得区别：</pre>
		<pre>HashMap是HashTable得轻量级实现（非线程安全得实现），他们都完成了Map接口；主要区别在于HvashMap允许<br />空（null）</pre>
		<pre>键值，由于非线程安全，效率上可能高于后者！</pre>
		<pre> </pre>
		<br />
		<br />
		<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=881760</p>
<img src ="http://www.cnitblog.com/wangjieboy/aggbug/19047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangjieboy/" target="_blank">huhoo</a> 2006-11-10 16:32 <a href="http://www.cnitblog.com/wangjieboy/archive/2006/11/10/19047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>瞎论</title><link>http://www.cnitblog.com/wangjieboy/archive/2006/11/09/19015.html</link><dc:creator>huhoo</dc:creator><author>huhoo</author><pubDate>Thu, 09 Nov 2006 09:42:00 GMT</pubDate><guid>http://www.cnitblog.com/wangjieboy/archive/2006/11/09/19015.html</guid><wfw:comment>http://www.cnitblog.com/wangjieboy/comments/19015.html</wfw:comment><comments>http://www.cnitblog.com/wangjieboy/archive/2006/11/09/19015.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/wangjieboy/comments/commentRss/19015.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/wangjieboy/services/trackbacks/19015.html</trackback:ping><description><![CDATA[    博客,播客,掘客,可口可了;下联应该怎么写?<br /><img src ="http://www.cnitblog.com/wangjieboy/aggbug/19015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/wangjieboy/" target="_blank">huhoo</a> 2006-11-09 17:42 <a href="http://www.cnitblog.com/wangjieboy/archive/2006/11/09/19015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>