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);