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));
}