【问题标题】:Using comparator to sort multiple class properties [duplicate]使用比较器对多个类属性进行排序
【发布时间】:2018-09-28 23:46:23
【问题描述】:

我的班级是:

public class Element {
    int number, group, period;
    String symbol, name;
    double weight;




    public Element(int number, String symbol, String name, int group, int period, double weight) {
        this.number = number;
        this.symbol = symbol;
        this.name = name;
        this.group = group;
        this.period = period;
        this.weight = weight;
    }

我需要做一个Comparator 类,它将首先按组对元素进行排序,然后如果它在同一组中则按数字排序。我的代码是:

class GroupComparator implements Comparator<Element> {
    @Override
    public int compare(Element a, Element b) {
        return a.group < b.group ? -1 : a.group == b.group ? a.number-b.number : 1;
    }
}

我不确定如何制定它以使其发挥作用。

【问题讨论】:

    标签: java comparator


    【解决方案1】:

    如果你使用的是 Java 8 及以上版本,那么简单如下:

    Comparator.comparingInt(Element::getGroup).thenComparingInt(Element::getNumber);
    

    这假设您有 groupnumber 的 getter 方法,分别命名为 getGroupgetNumber

    【讨论】:

      【解决方案2】:

      Java 8 的 JDK 中的增强功能使得创建这样的比较器变得非常容易,而无需所有样板:

      Comparator<Element> groupComparator =
          Comparator.comparingInt(e -> e.group).thenComparingInt(e -> e.number);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多