「已注销」 2015-05-04 01:42 采纳率: 0%
浏览 1488

想问关于comparable的问题

小弟学生党一枚。刚学JAva不久,碰见好多问题,还望指教

import java.util.*;
class userName implements Comparable
{
public String sName;
public userName(String sName)
{
this.sName=sName;
}
public int compareTo(Object o)//重写compareTo方法
{
userName tempuser=(userName)o;
String temp=tempuser.sName;
return this.sName.compareTo(temp); //按字符串sName的顺序排列Student
}
public String toString()
{
return this.sName;
}
}
public class UserNameSort {
public static void main(String args[])
{
System.out.println("排序后的用户名顺序为:");
TreeSet ts=new TreeSet();//插入Student对象时,会自动调用compareTo方法
ts.add(new userName("Lester"));
ts.add(new userName("Jimmy"));
ts.add(new userName("Bob"));
System.out.println(ts);
}
}

关于这段代码
public int compareTo(Object o)//重写compareTo方法
{
userName tempuser=(userName)o;
String temp=tempuser.sName;
return this.sName.compareTo(temp); //按字符串sName的顺序排列Student
}

能给我解释一下嘛,真心搞不明白是怎么回事

  • 写回答

1条回答 默认 最新

  • LHHNORTH 2015-05-04 02:22
    关注

    其实就是比较this.sName和temp这两个字符串哪个比较大。
    字符串compareTo方法这样比较:它从第一位开始比较,如果遇到不同的字符,则返回这两个字符的ascii值差值
    例如 "a".compareTo("b")返回-1 "a".compareTo("c")返回-2
    userName 类重载了这个compareTo()的目的就是:当比较两个userName对象谁比较大时,就直接比较这两个对象的sName成员谁比较大。
    好吧 其实我也是学生党~~

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波