linkedhashset.html

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

HTML
367
字号
<!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:50:59 CST 2005 --><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>LinkedHashSet (Java 2 Platform SE 5.0)</TITLE><META NAME="keywords" CONTENT="java.util.LinkedHashSet class"><LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"><SCRIPT type="text/javascript">function windowTitle(){    parent.document.title="LinkedHashSet (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/LinkedHashSet.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="LinkedHashMap.html" title="java.util 中的类"><B>上一个类</B></A>&nbsp;&nbsp;<A HREF="LinkedList.html" title="java.util 中的类"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">  <A HREF="../../index.html@java_2Futil_2FLinkedHashSet.html" target="_top"><B>框架</B></A>  &nbsp;&nbsp;<A HREF="LinkedHashSet.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="#methods_inherited_from_class_java.util.HashSet">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息:&nbsp;字段&nbsp;|&nbsp;<A HREF="#constructor_detail">构造方法</A>&nbsp;|&nbsp;方法</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>类 LinkedHashSet&lt;E&gt;</H2><PRE><A HREF="../lang/Object.html" title="java.lang 中的类">java.lang.Object</A>  <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><A HREF="AbstractCollection.html" title="java.util 中的类">java.util.AbstractCollection</A>&lt;E&gt;      <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><A HREF="AbstractSet.html" title="java.util 中的类">java.util.AbstractSet</A>&lt;E&gt;          <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><A HREF="HashSet.html" title="java.util 中的类">java.util.HashSet</A>&lt;E&gt;              <IMG SRC="../../resources/inherit.gif" ALT="继承者 "><B>java.util.LinkedHashSet&lt;E&gt;</B></PRE><DL><DT><B>所有已实现的接口:</B> <DD>java.io.Serializable, <A HREF="../lang/Cloneable.html" title="java.lang 中的接口">Cloneable</A>, <A HREF="../lang/Iterable.html" title="java.lang 中的接口">Iterable</A>&lt;E&gt;, <A HREF="Collection.html" title="java.util 中的接口">Collection</A>&lt;E&gt;, <A HREF="Set.html" title="java.util 中的接口">Set</A>&lt;E&gt;</DD></DL><HR><DL><DT><PRE>public class <B>LinkedHashSet&lt;E&gt;</B><DT>extends <A HREF="HashSet.html" title="java.util 中的类">HashSet</A>&lt;E&gt;<DT>implements <A HREF="Set.html" title="java.util 中的接口">Set</A>&lt;E&gt;, <A HREF="../lang/Cloneable.html" title="java.lang 中的接口">Cloneable</A>, java.io.Serializable</DL></PRE><P><p>具有可预知迭代顺序的 <tt>Set</tt> 接口的哈希表和链接列表实现。此实现与 <tt>HashSet</tt> 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到集合中的顺序(<i>插入顺序</i>)进行迭代。注意,插入顺序<i>不</i> 受在集合中<i>重新插入的</i> 元素的影响。(如果在 <tt>s.contains(e)</tt> 返回 <tt>true</tt> 后立即调用 <tt>s.add(e)</tt>,则元素 <tt>e</tt> 会被重新插入到集合 <tt>s</tt> 中。)<p>此实现可以让客户免遭未指定的、由 <A HREF="HashSet.html" title="java.util 中的类"><CODE>HashSet</CODE></A> 提供的通常杂乱无章的排序工作,而又不致引起与 <A HREF="TreeSet.html" title="java.util 中的类"><CODE>TreeSet</CODE></A> 关联的成本增加。使用它可以生成一个与原来顺序相同的集合副本,并且与原集合的实现无关: <pre>     void foo(Set m) {         Set copy = new LinkedHashSet(m);         ...     } </pre>如果模块通过输入得到一个集合,复制这个集合,然后返回由此副本决定了顺序的结果,这种情况下这项技术特别有用。(客户通常期望内容返回的顺序与它们出现的顺序相同。)<p>此类提供所有可选的 <tt>Set</tt> 操作,并且允许 null 元素。与 <tt>HashSet</tt> 一样,它可以为基本操作(<tt>add</tt>、<tt>contains</tt> 和 <tt>remove</tt>)提供稳定的性能,假定哈希函数将元素正确地分布到存储段中。由于增加了维护链接列表的开支,其性能很可能会比 <tt>HashSet</tt> 稍逊一筹,不过,这一点例外:<tt>LinkedHashSet</tt> 迭代所需时间与集合的<i>大小</i> 成正比,而与容量无关。<tt>HashSet</tt> 迭代很可能支出较大,因为它所需迭代时间与其<i>容量</i> 成正比。 <p>链接的哈希集合有两个影响其性能的参数:<i>初始容量</i> 和<i>加载因子</i>。它们与 <tt>HashSet</tt> 中的定义极其相同。注意,为初始容量选择非常高的值对此类的影响比对 <tt>HashSet</tt> 要小,因为此类的迭代时间不受容量的影响。 <p><strong>注意,此实现不是同步的。</strong>如果多个线程同时访问链接的哈希集合,而其中至少一个线程修改了该集合,则它<em>必须</em> 保持外部同步。这一般通过对自然封装该集合的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 <tt>Collections.synchronizedSet</tt> 方法来&ldquo;包装&rdquo;该集合。最好在创建时完成这一操作,以防止意外的非同步访问: <pre>     Set s = Collections.synchronizedSet(new LinkedHashSet(...)); </pre><p>此类的 <tt>iterator</tt> 方法返回的迭代器是<em>快速失败</em> 的:在迭代器创建之后,如果对集合进行修改,除非通过迭代器自身的移除方法,其他任何时间任何方式的修改,迭代器都将抛出 <tt>ConcurrentModificationException</tt>。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来不确定的时间任意发生不确定行为的风险。<p>注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何强有力的保证。快速失败迭代器尽最大努力抛出 <tt>ConcurrentModificationException</tt>。因此,编写依赖于此异常的程序的方式是错误的,正确做法是:<i>迭代器的快速失败行为应该仅用于检测程序错误。</i><p>此类是 <a href="../../../guide/collections/index.html">Java Collections Framework</a> 的成员。<P><P><DL><DT><B>从以下版本开始:</B></DT>  <DD>1.4</DD><DT><B>另请参见:</B><DD><A HREF="../lang/Object.html#hashCode()"><CODE>Object.hashCode()</CODE></A>, <A HREF="Collection.html" title="java.util 中的接口"><CODE>Collection</CODE></A>, <A HREF="Set.html" title="java.util 中的接口"><CODE>Set</CODE></A>, <A HREF="HashSet.html" title="java.util 中的类"><CODE>HashSet</CODE></A>, <A HREF="TreeSet.html" title="java.util 中的类"><CODE>TreeSet</CODE></A>, <A HREF="Hashtable.html" title="java.util 中的类"><CODE>Hashtable</CODE></A>, <A HREF="../../serialized-form.html#java.util.LinkedHashSet">序列化表格</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="LinkedHashSet.html#LinkedHashSet()">LinkedHashSet</A></B>()</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造一个带默认初始容量 (16) 和加载因子 (0.75) 的新空链接哈希集合。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="LinkedHashSet.html#LinkedHashSet(java.util.Collection)">LinkedHashSet</A></B>(<A HREF="Collection.html" title="java.util 中的接口">Collection</A>&lt;? extends <A HREF="LinkedHashSet.html" title="LinkedHashSet 中的类型参数">E</A>&gt;&nbsp;c)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造一个与指定集合中的元素相同的新链接哈希集合。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="LinkedHashSet.html#LinkedHashSet(int)">LinkedHashSet</A></B>(int&nbsp;initialCapacity)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造一个带指定初始容量和默认加载因子 (0.75) 的新空链接哈希集合。</TD></TR><TR BGCOLOR="white" CLASS="TableRowColor"><TD><CODE><B><A HREF="LinkedHashSet.html#LinkedHashSet(int, float)">LinkedHashSet</A></B>(int&nbsp;initialCapacity,              float&nbsp;loadFactor)</CODE><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造一个带有指定初始容量和加载因子的新空链接哈希集合。</TD></TR></TABLE>&nbsp;

⌨️ 快捷键说明

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