首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java根据字符串对自定义对象列表进行排序

Java根据字符串对自定义对象列表进行排序
EN

Stack Overflow用户
提问于 2015-05-07 12:15:42
回答 7查看 3.1K关注 0票数 2
代码语言:javascript
复制
class Person 
 {
 private String name;
 private String profession;
}

职业有价值:

  • 工程师
  • 医生
  • 教师
  • 学生

我有一个人的名单,我想根据职业来分类。首先是工程师,然后是博士,然后是老师,然后是学生。

是否可以用可比较的接口对其进行排序。

EN

回答 7

Stack Overflow用户

发布于 2015-05-07 12:23:16

实现Comparable

是的,您可以实现Comparable。创建一个方法compareTo(Person obj),然后编写自定义逻辑。你可以按字母顺序或其他你想要的算法进行比较--例如,医生之前的工程师,因为他赚的钱更多:)对于字母比较,你可以这样做:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2015-05-07 12:23:21

在变量中添加枚举:

代码语言:javascript
复制
class Person {
   private String name;
   private String profession;
   private enum enumProffesion
    {
        Doctor, Teacher, student;
    }
}

在此之后,可以向Person类添加功能,从而为您提供该职业的价值:

代码语言:javascript
复制
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顺序排序整数

票数 1
EN

Stack Overflow用户

发布于 2015-05-07 12:28:37

您可以使用这样的Collection.sort方法对自定义对象进行排序,

代码语言:javascript
复制
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语句行如下所示,

代码语言:javascript
复制
p2.getProfession().compareToIgnoreCase(p1.getProfession());

这将直接使您的list排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30100836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档