溫馨提示×

如何使用Java sorted()函數(shù)進(jìn)行多級排序

小樊
91
2024-08-27 12:25:12
欄目: 編程語言

在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é)果收集到一個新的列表中,并打印出來。

0