关于使用settree,compareto()方法的重写问题 编程断点设置 treeset使用方法的重写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.*; class Person implements Comparable{ //实现了comparable接口,必须重写compareTo方法!!! private String name; private int age; private float score; public Person(String name,int age,float score){ this.name=name; this.age=age; this.score=score; } public String toString(){ return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score; } public int compareTo(Object obj){ //compareTo方法是实现 Person p = (Person)obj; if(p.score>this.score){ return 1; } else if(p.score<this.score){ return -1; } else{ if(p.age>this.age){ return 1; } else if(p.age<this.age){ return -1; } else{ return 0; } } } //compareTo方法结束 } //类结束 public class OOCompareTo{ public static void main(String []args){ Person p[] = new Person[5]; p[0] = new Person("张三 ",23,96); p[1] = new Person("张三2",24,96); p[2] = new Person("张三3",21,94); p[3] = new Person("张三4",22,98); p[4] = new Person("张三5",20,89); Arrays.sort(p); //对数组p内的元素进行了遍历操作(排序) 默认的方法是compareTo for(int x=0;x<p.length;x++){ System.out.println(p[x]); //输出数组元素时默认的是toString()方法 } } } 重写compareTo方法,简单点,下面的实现就可以了public int compareTo(Emp o) { if(o == null){ throw new NullPointerException("参数不能为空"); } return this.age - o.age;里面还可以加一些类型校验的代码进去 恩,是简单点这样写,但是我想知道他运行步骤,就是一个具体的运行过程中他是怎样调用的,settree和compareto下都只有方法声明,我找不到具体实现,不晓得他是哪继承来的,然后我就想用断点一步步看下,然后就出现了如题所说的问题感谢回复 Comparable 属于标记接口,实现它,必须重写compareTo方法,一楼的很详细了你说的settree 不知道是什么东东,可以讲详细一点,这样大家好出主意断点的时候,可以跟到compareTo方法里面去的,这个没有问题为什么this指代的和我O输入的是同一个变量,你的this和要对比的O是同一个对象吗?看看它的地址,是否相同或者是由同样的构造方法构造出来的,只是属性值相同 ,给你造成了同一个对象的假象 请高手帮忙写个正则表达式程序。 谢谢。 如何创建一个只带有?和关闭窗口的对话框???急! 问个关于组播地址的简单问题! classpath问题:找不到当前目录下的类文件 先辈们,JAVA易学吗? 有关字符串分割问题 关于两个整数相除的问题! 谁能告诉我那里有JXL包下载? 一个关于数据库的问题,大家进来看看吧! 请问java程序中如何调用HLP或者chm文件? 关于socket使用setSoTimeout后出现的问题(服务器老是不间断的向客户端发送消息) 新人求助,我这个怎么运行不起来了
import java.util.*;
class Person implements Comparable{ //实现了comparable接口,必须重写compareTo方法!!!
private String name;
private int age;
private float score;
public Person(String name,int age,float score){
this.name=name;
this.age=age;
this.score=score;
}
public String toString(){
return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score;
}
public int compareTo(Object obj){ //compareTo方法是实现
Person p = (Person)obj;
if(p.score>this.score){
return 1;
}
else if(p.score<this.score){
return -1;
}
else{
if(p.age>this.age){
return 1;
}
else if(p.age<this.age){
return -1;
}
else{
return 0;
}
}
} //compareTo方法结束
} //类结束
public class OOCompareTo{
public static void main(String []args){
Person p[] = new Person[5];
p[0] = new Person("张三 ",23,96);
p[1] = new Person("张三2",24,96);
p[2] = new Person("张三3",21,94);
p[3] = new Person("张三4",22,98);
p[4] = new Person("张三5",20,89);
Arrays.sort(p); //对数组p内的元素进行了遍历操作(排序) 默认的方法是compareTo
for(int x=0;x<p.length;x++){
System.out.println(p[x]); //输出数组元素时默认的是toString()方法
}
}
}
if(o == null){
throw new NullPointerException("参数不能为空");
}
return this.age - o.age;里面还可以加一些类型校验的代码进去
你说的settree 不知道是什么东东,可以讲详细一点,这样大家好出主意
断点的时候,可以跟到compareTo方法里面去的,这个没有问题
为什么this指代的和我O输入的是同一个变量,你的this和要对比的O是同一个对象吗?看看它的地址,是否相同
或者是由同样的构造方法构造出来的,只是属性值相同 ,给你造成了同一个对象的假象