weakhashmap.html

来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 649 行 · 第 1/3 页

HTML
649
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!--NewPage--><HTML><HEAD><!-- Generated by javadoc (build 1.5.0_03) on Wed Nov 02 09:51:29 CST 2005 --><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>WeakHashMap (Java 2 Platform SE 5.0)</TITLE><META NAME="keywords" CONTENT="java.util.WeakHashMap class"><LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"><SCRIPT type="text/javascript">function windowTitle(){    parent.document.title="WeakHashMap (Java 2 Platform SE 5.0)";}</SCRIPT><NOSCRIPT></NOSCRIPT></HEAD><BODY BGCOLOR="white" onload="windowTitle();"><!-- ========= START OF TOP NAVBAR ======= --><A NAME="navbar_top"><!-- --></A><A HREF="#skip-navbar_top" title="跳过导航链接"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_top_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">  <TR ALIGN="center" VALIGN="top">  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>概述</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>类</B></FONT>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/WeakHashMap.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A>&nbsp;</TD>  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A>&nbsp;</TD>  </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup>&nbsp;2&nbsp;Platform<br>Standard&nbsp;Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">&nbsp;<A HREF="Vector.html" title="java.util 中的类"><B>上一个类</B></A>&nbsp;&nbsp;下一个类</FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">  <A HREF="../../index.html@java_2Futil_2FWeakHashMap.html" target="_top"><B>框架</B></A>  &nbsp;&nbsp;<A HREF="WeakHashMap.html" target="_top"><B>无框架</B></A>  &nbsp;&nbsp;<SCRIPT type="text/javascript">  <!--  if(window==top) {    document.writeln('<A HREF="../../allclasses-noframe.html"><B>所有类</B></A>');  }  //--></SCRIPT><NOSCRIPT>  <A HREF="../../allclasses-noframe.html"><B>所有类</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">  摘要:&nbsp;嵌套&nbsp;|&nbsp;字段&nbsp;|&nbsp;<A HREF="#constructor_summary">构造方法</A>&nbsp;|&nbsp;<A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息:&nbsp;字段&nbsp;|&nbsp;<A HREF="#constructor_detail">构造方法</A>&nbsp;|&nbsp;<A HREF="#method_detail">方法</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_top"></A><!-- ========= END OF TOP NAVBAR ========= --><HR><!-- ======== START OF CLASS DATA ======== --><H2><FONT SIZE="-1">java.util</FONT><BR>类 WeakHashMap&lt;K,V&gt;</H2><PRE><A HREF="../lang/Object.html" title="java.lang 中的类">java.lang.Object</A>  <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><A HREF="AbstractMap.html" title="java.util 中的类">java.util.AbstractMap</A>&lt;K,V&gt;      <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><B>java.util.WeakHashMap&lt;K,V&gt;</B></PRE><DL><DT><B>所有已实现的接口:</B> <DD><A HREF="Map.html" title="java.util 中的接口">Map</A>&lt;K,V&gt;</DD></DL><HR><DL><DT><PRE>public class <B>WeakHashMap&lt;K,V&gt;</B><DT>extends <A HREF="AbstractMap.html" title="java.util 中的类">AbstractMap</A>&lt;K,V&gt;<DT>implements <A HREF="Map.html" title="java.util 中的接口">Map</A>&lt;K,V&gt;</DL></PRE><P>以<em>弱键</em> 实现的基于哈希表的 <tt>Map</tt>。在 <tt>WeakHashMap</tt> 中,当某个键不再正常使用时,将自动移除其条目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。丢弃某个键时,其条目从映射中有效地移除,因此,该类的行为与其他的 <tt>Map</tt> 实现有所不同。<p>  null 值和 null 键都被支持。该类具有与 <tt>HashMap</tt> 类相似的性能特征,并具有相同的效能参数<em>初始容量</em> 和<em>加载因子</em>。<p> 像大多数集合类一样,该类是不同步的。可以使用 <tt>Collections.synchronizedMap</tt> 方法来构造同步的 <tt>WeakHashMap</tt>。<p> 该类主要与这样的键对象一起使用,其 <tt>equals</tt> 方法使用 <tt>==</tt> 运算符来测试对象标识。一旦这种键被丢弃,就永远无法再创建了,所以,过段时间后在 <tt>WeakHashMap</tt> 中查找此键是不可能的,不必对其项已移除而感到惊讶。该类十分适合与 <tt>equals</tt> 方法不是基于对象标识的键对象一起使用,比如,<tt>String</tt> 实例。然而,对于这种可重新创建的键对象,键若丢弃,就自动移除 <tt>WeakHashMap</tt> 条目,这种表现令人疑惑。<p> <tt>WeakHashMap</tt> 类的行为部分取决于垃圾回收器的动作,所以,几个常见的(虽然不是必需的)<tt>Map</tt> 常量不支持此类。因为垃圾回收器在任何时候都可能丢弃键,<tt>WeakHashMap</tt> 就像是一个被悄悄移除条目的未知线程。特别地,即使对 <tt>WeakHashMap</tt> 实例进行同步,并且没有调用任何赋值方法,在一段时间后 <tt>size</tt> 方法也可能返回较小的值,对于 <tt>isEmpty</tt> 方法,返回 <tt>false</tt>,然后返回 <tt>true</tt>,对于给定的键,<tt>containsKey</tt> 方法返回 <tt>true</tt> 然后返回 <tt>false</tt>,对于给定的键,<tt>get</tt> 方法返回一个值,但接着返回 <tt>null</tt>,对于以前出现在映射中的键,<tt>put</tt> 方法返回 <tt>null</tt>,而 <tt>remove</tt> 方法返回 <tt>false</tt>,对于键集、值集、项集进行的检查,生成的元素数量越来越少。<p> <tt>WeakHashMap</tt> 中的每个键对象间接地存储为一个弱引用的指示对象。因此,不管是在映射内还是在映射之外,只有在垃圾回收器清除某个键的弱引用之后,该键才会自动移除。<p> <strong>实现注意事项:</strong><tt>WeakHashMap</tt> 中的值对象由普通的强引用保持。因此应该小心谨慎,确保值对象不会直接或间接地强引用其自身的键,因为这会阻止键的丢弃。注意,值对象可以通过 <tt>WeakHashMap</tt> 本身间接引用其对应的键;这就是说,某个值对象可能强引用某个其他的键对象,而与该键对象相关联的值对象转而强引用第一个值对象的键。处理此问题的一种方法是,在插入前将值自身包装在 <tt>WeakReferences</tt> 中,如:<tt>m.put(key, new WeakReference(value))</tt>,然后,分别用 <tt>get</tt> 进行解包。<p>该类所有“collection 视图方法”返回的迭代器均是<i>快速失败的</i>:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器自身的 <tt>remove</tt> 或 <tt>add</tt> 方法,其他任何时间任何方式的修改,迭代器都将抛出 <tt>ConcurrentModificationException</tt>。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。<p>注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 <tt>ConcurrentModificationException</tt>。因此,编写依赖于此异常程序的方式是错误的,正确做法是:<i>迭代器的快速失败行为应该仅用于检测 bug。</i><p>此类是 <a href="../../../guide/collections/index.html">Java Collections Framework</a> 的成员。<P><P><DL><DT><B>从以下版本开始:</B></DT>  <DD>1.2</DD><DT><B>另请参见:</B><DD><A HREF="HashMap.html" title="java.util 中的类"><CODE>HashMap</CODE></A>, <A HREF="../lang/ref/WeakReference.html" title="java.lang.ref 中的类"><CODE>WeakReference</CODE></A></DL><HR><P><!-- ======== CONSTRUCTOR SUMMARY ======== --><A NAME="constructor_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>构造方法摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="WeakHashMap.html#WeakHashMap()">WeakHashMap</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用默认初始容量 (16) 和默认加载因子 (0.75) 构造一个新的空 <tt>WeakHashMap</tt>。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="WeakHashMap.html#WeakHashMap(int)">WeakHashMap</A></B>(int&nbsp;initialCapacity)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用给定的初始容量和默认加载因子 <tt>0.75</tt> 构造一个新的空 <tt>WeakHashMap</tt>。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="WeakHashMap.html#WeakHashMap(int, float)">WeakHashMap</A></B>(int&nbsp;initialCapacity,            float&nbsp;loadFactor)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用给定的初始容量和加载因子构造一个新的空 <tt>WeakHashMap</tt>。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="WeakHashMap.html#WeakHashMap(java.util.Map)">WeakHashMap</A></B>(<A HREF="Map.html" title="java.util 中的接口">Map</A>&lt;? extends <A HREF="WeakHashMap.html" title="WeakHashMap 中的类型参数">K</A>,? extends <A HREF="WeakHashMap.html" title="WeakHashMap 中的类型参数">V</A>&gt;&nbsp;t)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用与指定的 <tt>Map</tt> 相同的映射关系构造一个新 <tt>WeakHashMap</tt>。</TD></TR></TABLE>&nbsp;<!-- ========== METHOD SUMMARY =========== --><A NAME="method_summary"><!-- --></A><TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""><TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"><TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"><B>方法摘要</B></FONT></TH></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;void</CODE></FONT></TD><TD><CODE><B><A HREF="WeakHashMap.html#clear()">clear</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从该映射中移除所有映射关系。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;boolean</CODE></FONT></TD><TD><CODE><B><A HREF="WeakHashMap.html#containsKey(java.lang.Object)">containsKey</A></B>(<A HREF="../lang/Object.html" title="java.lang 中的类">Object</A>&nbsp;key)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果此映射对于指定的键包含映射关系,则返回 <tt>true</tt>。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;boolean</CODE></FONT></TD><TD><CODE><B><A HREF="WeakHashMap.html#containsValue(java.lang.Object)">containsValue</A></B>(<A HREF="../lang/Object.html" title="java.lang 中的类">Object</A>&nbsp;value)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果此映射将一个或多个键映射到指定值,则返回 <tt>true</tt>。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;<A HREF="Set.html" title="java.util 中的接口">Set</A>&lt;<A HREF="Map.Entry.html" title="java.util 中的接口">Map.Entry</A>&lt;<A HREF="WeakHashMap.html" title="WeakHashMap 中的类型参数">K</A>,<A HREF="WeakHashMap.html" title="WeakHashMap 中的类型参数">V</A>&gt;&gt;</CODE></FONT></TD><TD><CODE><B><A HREF="WeakHashMap.html#entrySet()">entrySet</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回此映射所包含的映射关系的 collection 视图。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"><CODE>&nbsp;<A HREF="WeakHashMap.html" title="WeakHashMap 中的类型参数">V</A></CODE></FONT></TD><TD><CODE><B><A HREF="WeakHashMap.html#get(java.lang.Object)">get</A></B>(<A HREF="../lang/Object.html" title="java.lang 中的类">Object</A>&nbsp;key)</CODE><BR>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?