lambda的排序实现

前言

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

    }
}
11232151-f7defbdea439c8a4.png
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());
  • Comparator的Reversed()方法。

多种条件的排序

people.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge));
  • 用起来很简单,可以节省很多时间,提高开发效率
  • Comparator的变化是需要学习一下的
  • 以后这种比较简化的代码时间需要多积累~

猜你喜欢

转载自blog.csdn.net/weixin_34185560/article/details/86962967