Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 基于第三个值的Java 8排序_Sorting_Java 8_Comparator - Fatal编程技术网

Sorting 基于第三个值的Java 8排序

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

这段代码首先按名字,然后按姓氏对hashset值进行排序。如果两个人的名字和姓氏相同,我想根据他们的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进行比较,请第三次链接它们:

.sorted(Comparator.comparing(Person::getFirstName).thenComparing(Person::getLastName).thenComparingInt(Person::getId))
注意,我在这里使用了方法引用,这使得代码更短,可读性更强