Java 8基于第3个值排序

ama*_*mal 1 sorting comparator java-8

此代码首先按名字排序哈希值,然后按姓氏排序.如果2个人具有相同的名字和姓氏,我想按他们的ID值对他们进行排序.请帮助我了解在这种情况下如何与第三个值进行比较.

public static void multiple_sort(HashSet<Person> personSet) {

    Comparator<Person> byFirstName = (f1, f2) -> f1.getFirstName().compareTo(f2.getFirstName());

    Comparator<Person> byLastName = (f1, f2) -> f1.getLastName().compareTo(f2.getLastName());

    personSet.stream().sorted(byLastName.thenComparing(byFirstName)).forEach(e -> System.out.println(e));

}
Run Code Online (Sandbox Code Playgroud)

Ale*_* C. 5

你已经将比较器链接了一次,所以如果你想通过它们的id进行比较,这不会改变,你可以连接它们第三次:

.sorted(Comparator.comparing(Person::getFirstName).thenComparing(Person::getLastName).thenComparingInt(Person::getId))
Run Code Online (Sandbox Code Playgroud)

请注意,我在这里使用了方法引用,这使得代码更短,更易读.