【實(shí)例描述】
用戶(hù)名也就是登錄系統(tǒng)、網(wǎng)站等使用的名稱(chēng),也稱(chēng)為登錄名稱(chēng)。一般情況下,用戶(hù)名都要求使用英文、數(shù)字或符號(hào)組成,如lester_西樓聽(tīng)雨。這些用戶(hù)名一般是根據(jù)用戶(hù)注冊(cè)的先后來(lái)進(jìn)行排序的,這樣不利于管理員的查找,本實(shí)例將實(shí)現(xiàn)對(duì)用戶(hù)名字符串的排序。實(shí)例的運(yùn)行效果如圖4.17 所示。
【實(shí)現(xiàn)過(guò)程】
在Eclipse 中新建項(xiàng)目UserNameSort,并在其中創(chuàng)建一個(gè)UserNameSort.java 文件。在該類(lèi)的主方法中創(chuàng)建compareTo()方法對(duì)用戶(hù)名進(jìn)行比較排序,并將結(jié)果以字符串?dāng)?shù)組的順序進(jìn)行輸出。核心代碼如下所示:
class userName implements Comparable
{
public String sName;
public userName(String sName)
{
this.sName=sName;
}
public int compareTo(Object o) // 重寫(xiě)compareTo 方法
{
userName tempuser=(userName)o;
String temp=tempuser.sName;
return this.sName.compareTo(temp); // 按字符串sName 的順序排列
userName
}
public String toString()
{
return this.sName;
}
}
public class UserNameSort {
public static void main(String args[])
{
System.out.println("排序后的用戶(hù)名順序?yàn)椋?quot;);
TreeSet ts=new TreeSet(); // 插入userName 對(duì)象時(shí),會(huì)自動(dòng)調(diào)用compareTo 方法
ts.add(new userName("Lester"));
ts.add(new userName("Jimmy"));
ts.add(new userName("Lily"));
System.out.println(ts);
}
}
【代碼解析】
按字典順序比較兩個(gè)字符串(compareTo),該比較方法基于字符串中各個(gè)字符的Unicode值。按字典順序?qū)⒋薙tring 對(duì)象表示的字符序列與參數(shù)字符串所表示的字符序列進(jìn)行比較。具體比較方法如圖4.18 所示。
【知識(shí)擴(kuò)展】
字符串是否相等也是使用較頻繁的一組操作。字符串對(duì)象調(diào)用String 類(lèi)中的equals()方法,比較當(dāng)前字符串對(duì)象是否與參數(shù)指定的字符串相同。equalsIgnoreCase()方法與equals()方法的作用與用法基本相同,只是equalsIgnoreCase()方法在運(yùn)用時(shí)會(huì)忽略大小寫(xiě)。