Java 使用comparator对多个类属性进行排序

Java 使用comparator对多个类属性进行排序,java,comparator,Java,Comparator,我的班级是: 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

我的班级是:

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;
    }
}
类GroupComparator实现Comparator{
@凌驾
公共整数比较(元素a、元素b){
返回a.group

我不知道如何对其进行公式化以使其正常工作。

如果您使用的是Java 8及更高版本,则其简单程度如下所示:

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

这假设您分别拥有名为
getGroup
getNumber
group
getNumber
的getter方法。

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

Comparator<Element> groupComparator =
    Comparator.comparingInt(e -> e.group).thenComparingInt(e -> e.number);
比较器组比较器=
比较器。比较(e->e.group)。然后比较(e->e.number);