美文网首页
lambda的排序实现

lambda的排序实现

作者: 传葱 | 来源:发表于2019-02-02 01:59 被阅读0次

    前言

    • 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());
    
    • Comparator的Reversed()方法。

    多种条件的排序

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

    相关文章

      网友评论

          本文标题:lambda的排序实现

          本文链接:https://www.haomeiwen.com/subject/zabjsqtx.html