【发布时间】:2020-05-07 17:12:57
【问题描述】:
我认为这不是描述该标题的最佳方式,但我想不出更好的方式来描述它。这是我的问题:我必须编写一个以几种不同方式进行比较的方法。如果姓氏相同,则需要按名字进行比较。如果名字相同,那么我需要按部分排序。在这个层次结构中对数据结构进行排序的最有效方法是什么?这是我目前所拥有的,我想我明白为什么它不起作用但我想不出另一种方法来编写这个函数:
//Student class structure, each field has a public get/set method
public class Student implements Comparable<Student>
{
private String fname;
private String lname;
private int section;
}
//My current compareTo method
@Override
public int compareTo(Student s)
{
/*
-compare by last name
-if the same, compare by first name
-if the same, compare by section
*/
String slast = s.getLastName();
if(lname.compareTo(slast) == 0)
{
String sfirst = s.getFirstName();
if(fname.compareTo(sfirst) == 0)
{
int sclass = s.getSection();
return Integer.compare(section, sclass);
}
else
{
return fname.compareTo(sfirst);
}
}
else
{
return lname.compareTo(slast);
}
}
【问题讨论】:
-
它是否有效并且您正在寻找更好的方法来执行此操作,或者您对此代码有任何问题?如果是后者,请添加更多详细信息,说明哪些输入未能给出预期结果
-
这能回答你的问题吗? How to compare objects by multiple fields
-
@user7 我的错误,我的代码问题出在我没想到会出现的问题中,删除问题,我的错。
-
@Scratte 确实有帮助,谢谢