Lambda Expressions
Use lambda expression to implement sort directly,no need to use new function.
@Test(dataProvider = "persons")
public void testSortPersons4(Person[] persons) {
List<Person> personCollection = Arrays.asList(persons);
personCollection.sort(Comparator.comparing((person) -> person.getAge()));
assertSortedPersons(personCollection.toArray(persons));
}
@Test(dataProvider = "persons")
public void testSortPersons5(Person[] persons) {
List<Person> personCollection = Arrays.asList(persons);
personCollection.sort(Comparator.comparing(Person::getAge));
assertSortedPersons(personCollection.toArray(persons));
}
@Test(dataProvider = "persons")
public void testSortPersons6(Person[] persons) {
List<Person> personCollection = Arrays.asList(persons);
personCollection.sort(Comparator.comparing(Person::getAge).thenComparing(Person::getName));
assertSortedPersons(personCollection.toArray(persons));
}
- Use multi sort condition
@Test(dataProvider = "persons")
public void testSortPersons7(Person[] persons) {
List<Person> personCollection = Arrays.asList(persons);
personCollection
.sort(Comparator.comparing(Person::getAge).reversed().reversed().thenComparing(Person::getName));
assertSortedPersons(personCollection.toArray(persons));
}
@Test(dataProvider = "persons")
public void testSortPersons8(Person[] persons) {
List<Person> personCollection = Arrays.asList(persons);
personCollection.sort((person1, person2) -> {
int ageCompare = person1.getAge() - person2.getAge();
return ageCompare != 0 ? ageCompare : person1.getName().compareTo(person2.getName());
});
assertSortedPersons(personCollection.toArray(persons));
}

本文介绍如何使用Lambda表达式简化Java中对象数组的排序过程。通过不同的Lambda表达式实现,包括直接比较年龄、按年龄和姓名多重排序以及自定义比较器等,展示了Lambda表达式的灵活性与强大功能。
1620

被折叠的 条评论
为什么被折叠?



