package test;import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;public class StudentForSet implements Comparable{
private String name;
private int age;
public StudentForSet(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "name:"+name+" "+"age:"+age;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SortedSet set = new TreeSet();
set.add(new StudentForSet("eiok",23)); //行10
set.add(new StudentForSet("zhangsan",21));//行11
set.add(new StudentForSet("wangwu",24));//行12
set.add(new StudentForSet("bak",25));//行13
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
@Override
public int compareTo(Object obj) {
// TODO Auto-generated method stub
StudentForSet student = (StudentForSet) obj;//将参数对象强转成当前类类型
return this.age-student.age;
}
为了更好理解compareTo这个重写的方法,求高手解释下this.age 和 student.age
}
import java.util.SortedSet;
import java.util.TreeSet;public class StudentForSet implements Comparable{
private String name;
private int age;
public StudentForSet(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "name:"+name+" "+"age:"+age;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SortedSet set = new TreeSet();
set.add(new StudentForSet("eiok",23)); //行10
set.add(new StudentForSet("zhangsan",21));//行11
set.add(new StudentForSet("wangwu",24));//行12
set.add(new StudentForSet("bak",25));//行13
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
@Override
public int compareTo(Object obj) {
// TODO Auto-generated method stub
StudentForSet student = (StudentForSet) obj;//将参数对象强转成当前类类型
return this.age-student.age;
}
为了更好理解compareTo这个重写的方法,求高手解释下this.age 和 student.age
}
name:zhangsan age:21
name:eiok age:23
name:wangwu age:24
name:bak age:25
StudentForSet sf2 = new StudentForSet("zhangsan", 21);
int result = sf1.compareTo(sf2);
if (result > 0) {
System.out.println(" sf1 大于sf2");
} else if (result == 0) {
System.out.println(" sf1 等于sf2");
} else {
System.out.println(" sf1 小于sf2");
}
this.age 就相当于 sf1.age,
student.age 相当于 sf2.age如果反过来sf2.compareTo(sf1);
那么this.age 就相当于 sf2.age,
student.age 相当于 sf1.age
你说的这些我都清楚,只是我不明白,当调用new StudentForSet("eiok",23),this肯定就是当前对象啦,那么StudentForSet student = (StudentForSet) obj;是怎么把new StudentForSet("zhangsan",21)这个对象传给obj的,然后进行比较。