class Person implements Comparable{
String firstName, lastName; //jack跟JOHN Lee跟zhang返回1 zhang跟lee -1
Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
String getFirstName(){
return firstName;
}
String getLastName(){
return lastName;
}
public int compareTo(Object o){
Person p = (Person)o;
int firstCmp = firstName.compareTo(p.firstName);
return (firstCmp!= 0 ? firstCmp :
lastName.compareTo(p.lastName));
}
public String toString(){
return firstName + lastName;
}
}就是实现compareTo方法的时候里面用的firstName.compareTo(p.firstName),然后在主函数调用Collections.sort()方法的时候,它是怎么比较的,firstName不是在Person的构造函数声明的局部变量吗?怎么在这也能调用?帮忙解释下,谢谢了
String firstName, lastName; //jack跟JOHN Lee跟zhang返回1 zhang跟lee -1
Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
String getFirstName(){
return firstName;
}
String getLastName(){
return lastName;
}
public int compareTo(Object o){
Person p = (Person)o;
int firstCmp = firstName.compareTo(p.firstName);
return (firstCmp!= 0 ? firstCmp :
lastName.compareTo(p.lastName));
}
public String toString(){
return firstName + lastName;
}
}就是实现compareTo方法的时候里面用的firstName.compareTo(p.firstName),然后在主函数调用Collections.sort()方法的时候,它是怎么比较的,firstName不是在Person的构造函数声明的局部变量吗?怎么在这也能调用?帮忙解释下,谢谢了
this.firstName的意思是当前对象的firstName就是String firstName, lastName; //jack跟JOHN Lee跟zhang返回1 zhang跟lee -1这里的firstName
方法用于比较两个p是否是同一个人,比较的方法就是看firstName和lastName是否相同
Person p = (Person)o;
int firstCmp = firstName.compareTo(p.firstName);
return (firstCmp!= 0 ? firstCmp :
lastName.compareTo(p.lastName));
} p对象是传进来的是一个person对象 而firstName.compareTo的firstname是当前对象的全局变量 其实也是一个person对象 是两个person的firstname在比较
firstName就、是当前对象的firstName,而p.firstName是Object o的属性
注意这句Person p = (Person)o;
这里的o是参数,就是从外部传进来的,如果把参数改成Person p1就清晰很多了