在Java中,你可以使用sorted()
函數(shù)與Comparator
結(jié)合實(shí)現(xiàn)多級排序
import java.util.*;
class Person {
String name;
int age;
double salary;
public Person(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
public class MultiLevelSortingExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30, 1200.0),
new Person("Bob", 25, 1000.0),
new Person("Charlie", 30, 1100.0),
new Person("David", 28, 900.0)
);
// 按年齡升序排序,如果年齡相同則按薪水升序排序
Comparator<Person> comparator = Comparator.comparingInt((Person p) -> p.age)
.thenComparingDouble(p -> p.salary);
List<Person> sortedPeople = people.stream()
.sorted(comparator)
.collect(Collectors.toList());
System.out.println("Multi-level sorted list:");
for (Person person : sortedPeople) {
System.out.println(person);
}
}
}
在這個示例中,我們首先創(chuàng)建了一個Person
類,并定義了一些屬性。然后,我們創(chuàng)建了一個包含Person
對象的列表,并使用Stream
API 和 sorted()
函數(shù)對其進(jìn)行多級排序。
我們創(chuàng)建了一個Comparator
,首先根據(jù)年齡進(jìn)行升序排序,然后根據(jù)薪水進(jìn)行升序排序。最后,我們將排序后的結(jié)果收集到一個新的列表中,并打印出來。