class Person
{
private String name;
private String profession;
}职业有价值:
我有一个人的名单,我想根据职业来分类。首先是工程师,然后是博士,然后是老师,然后是学生。
是否可以用可比较的接口对其进行排序。
发布于 2015-05-07 12:23:16
实现Comparable
是的,您可以实现Comparable。创建一个方法compareTo(Person obj),然后编写自定义逻辑。你可以按字母顺序或其他你想要的算法进行比较--例如,医生之前的工程师,因为他赚的钱更多:)对于字母比较,你可以这样做:
class Person implements Comparable<Person> {
@Override
public int compareTo(Person o) {
return this.profession.compareTo(o.getProfession());
}
private String name;
private String profession;
}之后,您只需使用Collections.sort
发布于 2015-05-07 12:23:21
在变量中添加枚举:
class Person {
private String name;
private String profession;
private enum enumProffesion
{
Doctor, Teacher, student;
}
}在此之后,可以向Person类添加功能,从而为您提供该职业的价值:
public int professionValue()
{
enumProffesion enumValue= enumProffesion.valueOf(proffesion);
switch (enumValue) {
case Doctor: return 1; break;
case Teacher: return 2; break;
case student: return 3; break;
default: return null;
}
}在此之后,您只需实现对所有人员进行排序的逻辑。为此,您可以帮助您自己的答案:按最低到最高java顺序排序整数
发布于 2015-05-07 12:28:37
您可以使用这样的Collection.sort方法对自定义对象进行排序,
Collections.sort(list, new Comparator(){
public int compare(Object o1, Object o2) {
Person p1 = (Person) o1;
Person p2 = (Person) o2;
return p1.getProfession().compareToIgnoreCase(p2.getProfession());
}
});要使Sort in reverse order,只需使return语句行如下所示,
p2.getProfession().compareToIgnoreCase(p1.getProfession());这将直接使您的list排序。
https://stackoverflow.com/questions/30100836
复制相似问题