Java 8 根据第三个值排序
Java 8 Sorting based on 3rd value
此代码首先按名字然后按姓氏对哈希集值进行排序。如果两个人的名字和姓氏相同,我想按他们的 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));
}
您已经将比较器链接了一次,所以如果您想按它们的 ID 进行比较,这不会改变,您可以第三次链接它们:
.sorted(Comparator.comparing(Person::getFirstName).thenComparing(Person::getLastName).thenComparingInt(Person::getId))
注意我在这里使用了方法引用,这使得代码更短更易读。
此代码首先按名字然后按姓氏对哈希集值进行排序。如果两个人的名字和姓氏相同,我想按他们的 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));
}
您已经将比较器链接了一次,所以如果您想按它们的 ID 进行比较,这不会改变,您可以第三次链接它们:
.sorted(Comparator.comparing(Person::getFirstName).thenComparing(Person::getLastName).thenComparingInt(Person::getId))
注意我在这里使用了方法引用,这使得代码更短更易读。