﻿<?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>语源科技BlogJava-求知欲望</title><link>http://www.blogjava.net/stkamen/</link><description>牛牛的窝</description><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 01:00:38 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 01:00:38 GMT</pubDate><ttl>60</ttl><item><title>一个会排序的Vector   </title><link>http://www.blogjava.net/stkamen/archive/2005/08/07/9507.html</link><dc:creator>牛虻</dc:creator><author>牛虻</author><pubDate>Sun, 07 Aug 2005 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/stkamen/archive/2005/08/07/9507.html</guid><wfw:comment>http://www.blogjava.net/stkamen/comments/9507.html</wfw:comment><comments>http://www.blogjava.net/stkamen/archive/2005/08/07/9507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stkamen/comments/commentRss/9507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stkamen/services/trackbacks/9507.html</trackback:ping><description><![CDATA[在&lt;&lt;thinking&nbsp;in&nbsp;java&gt;&gt;中看到一段拍案叫绝的代码!起名叫:会排序的Vector<BR>代码如下:<BR><BR>
<DIV class=codeStyle>
<OL>
<LI><B><FONT color=#0000ff>import</FONT></B>&nbsp;java.util.*; 
<LI><B><FONT color=#0000ff>interface</FONT></B>&nbsp;Compare&nbsp;{ 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>boolean</FONT></B>&nbsp;lessThan(<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;lhs,&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;rhs); 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>boolean</FONT></B>&nbsp;lessThanOrEqual(<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;lhs,&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;rhs); 
<LI>} 
<LI><I><FONT color=#339900>////////////////////////////////////////////////////////////////////</FONT></I> 
<LI><B><FONT color=#0000ff>class</FONT></B>&nbsp;SortVector&nbsp;<B><FONT color=#0000ff>extends</FONT></B>&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/util/Vector.java.html" target=_blank><FONT class=classLink><U>Vector</U></FONT></A></B>&nbsp;{ 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>private</FONT></B>&nbsp;Compare&nbsp;compare;&nbsp;<I><FONT color=#339900>//&nbsp;To&nbsp;hold&nbsp;the&nbsp;callback</FONT></I> 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>public</FONT></B>&nbsp;SortVector(Compare&nbsp;comp)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;compare&nbsp;=&nbsp;comp; 
<LI>&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>void</FONT></B>&nbsp;sort()&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;quickSort(0,&nbsp;size()&nbsp;-&nbsp;1); 
<LI>&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;<I><FONT color=#339900>//&nbsp;快速排序</FONT></I> 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>private</FONT></B>&nbsp;<B><FONT color=#0000ff>void</FONT></B>&nbsp;quickSort(<B><FONT color=#0000ff>int</FONT></B>&nbsp;left,&nbsp;<B><FONT color=#0000ff>int</FONT></B>&nbsp;right)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>if</FONT></B>(right&nbsp;&gt;&nbsp;left)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;o1&nbsp;=&nbsp;elementAt(right); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>int</FONT></B>&nbsp;i&nbsp;=&nbsp;left&nbsp;-&nbsp;1; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>int</FONT></B>&nbsp;j&nbsp;=&nbsp;right; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>while</FONT></B>(<B><FONT color=#0000ff>true</FONT></B>)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>while</FONT></B>(compare.lessThan( 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elementAt(++i),&nbsp;o1)); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>while</FONT></B>(j&nbsp;&gt;&nbsp;0) 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>if</FONT></B>(compare.lessThanOrEqual(elementAt(--j),&nbsp;o1)) 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>break</FONT></B>;&nbsp;<I><FONT color=#339900>//&nbsp;out&nbsp;of&nbsp;while</FONT></I> 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>if</FONT></B>(i&nbsp;&gt;=&nbsp;j)&nbsp;<B><FONT color=#0000ff>break</FONT></B>; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(i,&nbsp;j); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(i&nbsp;,&nbsp;right); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quickSort(left,&nbsp;i-1); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quickSort(i+1,&nbsp;right); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;<I><FONT color=#339900>//交换位置</FONT></I> 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>private</FONT></B>&nbsp;<B><FONT color=#0000ff>void</FONT></B>&nbsp;swap(<B><FONT color=#0000ff>int</FONT></B>&nbsp;loc1,&nbsp;<B><FONT color=#0000ff>int</FONT></B>&nbsp;loc2)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;tmp&nbsp;=&nbsp;elementAt(loc1); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;setElementAt(elementAt(loc2),&nbsp;loc1); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;setElementAt(tmp,&nbsp;loc2); 
<LI>&nbsp;&nbsp;} 
<LI>} 
<LI><I><FONT color=#339900>////////////////////////////////////////////////////////////////////</FONT></I> 
<LI><B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>class</FONT></B>&nbsp;StringSortTest&nbsp;{ 
<LI>&nbsp;&nbsp;<I><FONT color=#339900>//&nbsp;自定义比较规则</FONT></I> 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<B><FONT color=#0000ff>class</FONT></B>&nbsp;StringCompare&nbsp;<B><FONT color=#0000ff>implements</FONT></B>&nbsp;Compare&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>boolean</FONT></B>&nbsp;lessThan(<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;l,&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;r)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>return</FONT></B>&nbsp;((<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/String.java.html" target=_blank><FONT class=classLink><U>String</U></FONT></A></B>)l).toLowerCase().compareTo( 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/String.java.html" target=_blank><FONT class=classLink><U>String</U></FONT></A></B>)r).toLowerCase())&nbsp;&lt;&nbsp;0; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>boolean</FONT></B>&nbsp; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;lessThanOrEqual(<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;l,&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/Object.java.html" target=_blank><FONT class=classLink><U>Object</U></FONT></A></B>&nbsp;r)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>return</FONT></B>&nbsp;((<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/String.java.html" target=_blank><FONT class=classLink><U>String</U></FONT></A></B>)l).toLowerCase().compareTo( 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/String.java.html" target=_blank><FONT class=classLink><U>String</U></FONT></A></B>)r).toLowerCase())&nbsp;&lt;=&nbsp;0; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;} 
<LI>&nbsp;&nbsp;<B><FONT color=#0000ff>public</FONT></B>&nbsp;<B><FONT color=#0000ff>static</FONT></B>&nbsp;<B><FONT color=#0000ff>void</FONT></B>&nbsp;main(<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/String.java.html" target=_blank><FONT class=classLink><U>String</U></FONT></A></B>[]&nbsp;args)&nbsp;{ 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;SortVector&nbsp;sv&nbsp;=&nbsp; 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>new</FONT></B>&nbsp;SortVector(<B><FONT color=#0000ff>new</FONT></B>&nbsp;StringCompare()); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT color=#339900>//&nbsp;添加Element</FONT></I> 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;sv.addElement(<FONT color=#ff33ff>"d"</FONT>); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;sv.addElement(<FONT color=#ff33ff>"A"</FONT>); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;sv.addElement(<FONT color=#ff33ff>"C"</FONT>); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;sv.addElement(<FONT color=#ff33ff>"c"</FONT>); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT color=#339900>//&nbsp;排序</FONT></I> 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;sv.sort(); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/util/Enumeration.java.html" target=_blank><FONT class=classLink><U>Enumeration</U></FONT></A></B>&nbsp;e&nbsp;=&nbsp;sv.elements(); 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT color=#339900>//&nbsp;输出结果</FONT></I> 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT color=#0000ff>while</FONT></B>(e.hasMoreElements()) 
<LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><A href="http://www.ask-pro.net/source/jdk142/java/lang/System.java.html" target=_blank><FONT class=classLink><U>System</U></FONT></A></B>.out.println(e.nextElement()); 
<LI>&nbsp;&nbsp;} 
<LI>} </LI></OL></DIV><img src ="http://www.blogjava.net/stkamen/aggbug/9507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stkamen/" target="_blank">牛虻</a> 2005-08-07 13:33 <a href="http://www.blogjava.net/stkamen/archive/2005/08/07/9507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>