Sorting 基于第三个值的Java 8排序
这段代码首先按名字,然后按姓氏对hashset值进行排序。如果两个人的名字和姓氏相同,我想根据他们的ID值对他们进行排序。请帮助我了解在这种情况下如何与第三个值进行比较Sorting 基于第三个值的Java 8排序,sorting,java-8,comparator,Sorting,Java 8,Comparator,这段代码首先按名字,然后按姓氏对hashset值进行排序。如果两个人的名字和姓氏相同,我想根据他们的ID值对他们进行排序。请帮助我了解在这种情况下如何与第三个值进行比较 public static void multiple_sort(HashSet<Person> personSet) { Comparator<Person> byFirstName = (f1, f2) -> f1.getFirstName().compareTo(f2.getFirs
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进行比较,请第三次链接它们:
.sorted(Comparator.comparing(Person::getFirstName).thenComparing(Person::getLastName).thenComparingInt(Person::getId))
注意,我在这里使用了方法引用,这使得代码更短,可读性更强