在Java中,可以使用Comparator
接口来实现按照多个标准对对象数组进行排序。下面是一个示例代码:
import java.util.Arrays;
import java.util.Comparator;
class Person {
private String name;
private int age;
private double height;
public Person(String name, int age, double height) {
this.name = name;
this.age = age;
this.height = height;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getHeight() {
return height;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", height=" + height +
'}';
}
}
public class Main {
public static void main(String[] args) {
Person[] persons = {
new Person("Alice", 25, 165.2),
new Person("Bob", 30, 175.0),
new Person("Charlie", 20, 160.5),
new Person("David", 35, 180.3)
};
// 按照年龄升序排序
Arrays.sort(persons, Comparator.comparingInt(Person::getAge));
System.out.println("按照年龄升序排序:");
for (Person person : persons) {
System.out.println(person);
}
System.out.println();
// 按照身高降序排序
Arrays.sort(persons, Comparator.comparingDouble(Person::getHeight).reversed());
System.out.println("按照身高降序排序:");
for (Person person : persons) {
System.out.println(person);
}
System.out.println();
// 按照年龄升序,如果年龄相同则按照身高降序排序
Arrays.sort(persons, Comparator.comparingInt(Person::getAge)
.thenComparingDouble(Person::getHeight).reversed());
System.out.println("按照年龄升序,如果年龄相同则按照身高降序排序:");
for (Person person : persons) {
System.out.println(person);
}
}
}
输出结果为:
按照年龄升序排序:
Person{name='Charlie', age=20, height=160.5}
Person{name='Alice', age=25, height=165.2}
Person{name='Bob', age=30, height=175.0}
Person{name='David', age=35, height=180.3}
按照身高降序排序:
Person{name='David', age=35, height=180.3}
Person{name='Bob', age=30, height=175.0}
Person{name='Alice', age=25, height=165.2}
Person{name='Charlie', age=20, height=160.5}
按照年龄升序,如果年龄相同则按照身高降序排序:
Person{name='Charlie', age=20, height=160.5}
Person{name='Alice', age=25, height=165.2}
Person{name='Bob', age=30, height=175.0}
Person{name='David', age=35, height=180.3}
从示例代码中可以看到,我们可以使用Comparator.comparingXXX
方法来创建一个比较器,其中XXX
表示要比较的字段。然后我们可以使用thenComparingXXX
方法来在比较器链上添加更多的比较条件。可以根据需要使用reversed
方法来指定升序还是降序排序。最后,我们使用Arrays.sort
方法来对对象数组进行排序。
上一篇:按照多个标签将任务按id排序
下一篇:按照多个参数对字符串列表进行排序