前言
- lambda是一种非常有用的技术,吧代码实现变得更加简单。尤其是一些传统变成手段解决起来相当繁琐的问题,比如对象排序,下边举例介绍一下lambda在对象排序中的实践.
List排序
public class CompareLambdaTest {
public static void main(String[] args) {
ArrayList<Person> people = Lists.newArrayList(
new Person("John", 11),
new Person("Sony", 22)
);
// people.sort((Person p1, Person p2) -> p1.getName().compareTo(p2.getName()));
people.sort((p1,p2) -> p1.getName().compareTo(p2.getName()));
System.out.println(people.get(0));
}
}
image.png
- 很简单的两句,就可以代替Comparator的实现
静态对象
@Data
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public static int compareByNameThenByAge(Person p1, Person p2) {
if (StringUtils.equals(p1.getName(), p2.getName())) {
return p1.getAge() - p2.getAge();
}
else {
return p1.getName().compareTo(p2.getName());
}
}
}
people.sort(Person::compareByNameThenByAge);
使用Comparator排序
Collections.sort(people, Comparator.comparing(Person::getName));
反序
Collections.sort(people, Comparator.comparing(Person::getName).reversed());
多种条件的排序
people.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge));
- 用起来很简单,可以节省很多时间,提高开发效率
- Comparator的变化是需要学习一下的
- 以后这种比较简化的代码时间需要多积累~
网友评论