comparator.html
来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 282 行 · 第 1/2 页
HTML
282 行
<!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:43 CST 2005 --><META http-equiv="Content-Type" content="text/html; charset=gb2312"><TITLE>Comparator (Java 2 Platform SE 5.0)</TITLE><META NAME="keywords" CONTENT="java.util.Comparator interface"><LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"><SCRIPT type="text/javascript">function windowTitle(){ parent.document.title="Comparator (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> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>类</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Comparator.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="Collections.html" title="java.util 中的类"><B>上一个类</B></A> <A HREF="ConcurrentModificationException.html" title="java.util 中的类"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html@java_2Futil_2FComparator.html" target="_top"><B>框架</B></A> <A HREF="Comparator.html" target="_top"><B>无框架</B></A> <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"> 摘要: 嵌套 | 字段 | 构造方法 | <A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息: 字段 | 构造方法 | <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>接口 Comparator<T></H2><HR><DL><DT><PRE>public interface <B>Comparator<T></B></DL></PRE><P>比较函数强行对某些对象 collection 进行<i>整体排序</i>。可以将 Comparator 传递给 sort 方法(如 <tt>Collections.sort</tt>),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如 <tt>TreeSet</tt> 或 <tt>TreeMap</tt>)的顺序。<p>当且仅当对于一组元素 <tt>S</tt> 中的每个 <tt>e1</tt> 和 <tt>e2</tt> 而言,<tt>(compare((Object)e1, (Object)e2)==0)</tt> 与 <tt>e1.equals((Object)e2)</tt> 具有相等的布尔值时,Comparator <tt>c</tt> 强行对 <tt>S</tt> 进行的排序才叫做<i>与等号一致</i> 的排序。<p>当使用具有与等号一致的强行排序能力的 comparator 对有序 set(或有序映射)进行排序时,应该小心谨慎。假定一个带有显式 Comparator <tt>c</tt> 的有序 set(或有序映射)与从 set <tt>S</tt> 中抽取出来的元素(或键)一起使用。如果 <tt>c</tt> 强行对 <tt>S</tt> 进行的排序与等号一致,那么有序 set(或有序映射)将是行为“怪异的”。尤其是那些将违背根据 <tt>equals</tt> 所定义 set(或映射)的常规协定的有序 set(或有序映射)。<p> 例如,如果使用 comparator <tt>c</tt> 将满足 <tt>(a.equals((Object)b) && c.compare((Object)a, (Object)b) != 0)</tt> 的两个键 <tt>a</tt> 和 <tt>b</tt> 添加到有序 set 中,则第二个 <tt>add</tt> 操作将返回 false(有序 set 的大小没有增加),因为从有序 set 的角度来看,<tt>a</tt> 和 <tt>b</tt> 是相等的。<p>注:通常用 comparator 来实现 <tt>java.io.Serializable</tt> 是一个好主意,因为它们在可序列化的数据结构(像 <tt>TreeSet</tt>、<tt>TreeMap</tt>)中可用作排序方法。为了成功地序列化数据结构,comparator(如果已提供)必须实现 <tt>Serializable</tt>。<p>在算术上,定义给定 comparator <tt>c</tt> 对给定对象 set <tt>S</tt> 强行实施<i>整体排序</i> 的<i>关系式</i> 为:<pre> {(x, y) such that c.compare((Object)x, (Object)y) <= 0}.</pre> 整体排序的<i>商</i> 是:<pre> {(x, y) such that c.compare((Object)x, (Object)y) == 0}. </pre>它直接遵循 <tt>compare</tt> 的协定,商是 <tt>S</tt> 上的<i>等价关系</i>,自然顺序是 <tt>S</tt> 上的<i>整体排序</i>。当我们说 <tt>c</tt> 强行对 <tt>S</tt> 的排序是<i>与等号一致</i> 时,意思是说自然排序的商是对象的 <tt>equals(Object)</tt> 方法所定义的等价关系:<pre> {(x, y) such that x.equals((Object)y)}. </pre><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="../lang/Comparable.html" title="java.lang 中的接口"><CODE>Comparable</CODE></A>, <A HREF="Arrays.html#sort(T[], java.util.Comparator)"><CODE>Arrays.sort(Object[], Comparator)</CODE></A>, <A HREF="TreeMap.html" title="java.util 中的类"><CODE>TreeMap</CODE></A>, <A HREF="TreeSet.html" title="java.util 中的类"><CODE>TreeSet</CODE></A>, <A HREF="SortedMap.html" title="java.util 中的接口"><CODE>SortedMap</CODE></A>, <A HREF="SortedSet.html" title="java.util 中的接口"><CODE>SortedSet</CODE></A>, <CODE>Serializable</CODE></DL><HR><P><!-- ========== 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">
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?