我要求写一个student.compareTo方法,如果两个学生的名字和两个学生的姓氏相同,则该方法应该返回0。如果学生的姓名按字典顺序排序低于传入的名称,则应返回负值。如果学生的姓名按字典顺序排序,则应返回正值。
这是我的代码到目前为止。对于负值,正值应该是固定值还是应该使用compareTo值?
public int compareTo(Student){
int comparison = (this.firstName.compareTo(Student.firstName));
int comparison2 = (this.lastName.compareTo(Student.lastName));
if (comparison == comparison2)
return 0;
else if ((comparison=0 && comparison2<0) ||(comparison<0 && comparison2=0)
return -1;
else
return 1;
}
这是另一个代码。我想知道我是否正确地做到了这一点
public int compareTo(Student){
String studentinfo=(this.firstName + this.lastName);
String studentinfo2=(s1.firstName + s1.lastName);
int comparison =studentinfo.compareTo(studentinfo2);
return comparison;
}
答案 0 :(得分:3)
这太复杂了......
将你的比较联系起来;只有当第一个返回0时,运行第二个;如果第二个返回0,则运行第三个;等
即,返回非零的第一个比较结果,或最后一个。例如:
@Override
public int compareTo(final Student other)
{
int ret = firstName.compareTo(other.firstName);
if (ret != 0) // No need to go further
return ret;
// Hypothetic second comparison to do before lastName
// ret = foo.compareTo(other.foo);
// if (ret != 0)
// return ret;
// Rinse, repeat...
// All previous comparisons returned 0,
// return the result of the last comparison
return lastName.compareTo(other.lastName);
}
番石榴有一个nice utility class:
@Override
public int compareTo(final Student other)
{
return ComparisonChain.start()
.compare(firstName, other.firstName)
.compare(lastName, other.lastName)
.result();
}