加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为对象提供多种类型的排序

发布时间:2020-12-15 05:11:35 所属栏目:Java 来源:网络整理
导读:假设我有一个带有多个String字段的 java对象. public class Person { private String field1 // keeps going 我希望能够根据我选择的任何领域对人员列表进行排序. 我知道我可以使用比较器接口并实现多个compareTo,如主题:How do I make 2 comparable method
假设我有一个带有多个String字段的 java对象.

public class Person {
    private String field1
    // keeps going

我希望能够根据我选择的任何领域对人员列表进行排序.

我知道我可以使用比较器接口并实现多个compareTo,如主题:How do I make 2 comparable methods in only one class?中所述

但是在使用Collections.sort()时

但是,如果没有所有这些重复代码,我有什么方法可以做到这一点吗?

解决方法

I want to be able to have the ability to sort a list of persons
depending on whatever field I choose.

@JB Nizet的Java 8解决方案将成为一个技巧,但它仅适用于Java 8.大多数人使用的低于8的版本是什么?

我将为您提供我认为比Java 8更低版本的简单解决方案.

您真的不需要创建多个Comparator类(您将其称为“重复代码”).如何使用适当的技术,如条件或枚举?

private Comparator<YourClass> getComparator(MyPropertiesEnum myEnum) {
   return new Comparator<YourClass>() {

      @Override
      public int compare(YourClass o1,YourClass o2) { {
         switch (myEnum) {
            case FIRSTNAME:
               // implementation for firstname
            break;
            case LASTNAME:
              // implementation for lastname
            break;
            default:
               // implementation for default version
            break;           
         }
      }
   };
}

MyPropertiesEnum的位置如下:

public enum MyPropertiesEnum {
   FIRSTNAME,LASTNAME,AGE;
}

注意:如果条件适合您,也可以使用适当的条件.

希望它能帮助您解决问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读