使用比较器对多个 class 属性进行排序

Using comparator to sort multiple class properties

我的 class 是:

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,它将首先按组对元素进行排序,然后如果它在同一组中则按编号排序。我的代码是:

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 8 及更高版本,则如下所示:

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

这假设您有 getter 方法用于 groupnumber 分别命名为 getGroupgetNumber

Java 8 的 JDK 中的增强功能使得创建这样一个没有所有样板的比较器变得非常容易:

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