【问题标题】:Replace Lambdas with method reference.将 Lambda 替换为方法参考。
【发布时间】:2015-06-15 16:55:57
【问题描述】:

请帮助我了解如何将 lambdas 替换为以下方法的方法参考。

    public List<Person> sortByStartDate_ASC(LinkedHashSet<Person> personList) {

        List<Person> pList = new ArrayList<Person>(personList);

        Collections.sort(pList, (Person person1, Person person2) -> person1
            .getStartDate().compareTo(person2.getStartDate()));
        return pList;
    }

【问题讨论】:

    标签: java lambda java-8 method-reference


    【解决方案1】:

    等效的方法引用是comparing(Person::getStartDate) - 请注意,在您的特定情况下,您可以直接对流进行排序。此外,没有必要将您的方法限制为仅接受 LinkedHashSets - 任何集合都可以:

    public List<Person> sortByStartDate_ASC(Collection<Person> personList) {
      return personList.stream()
                       .sorted(comparing(Person::getStartDate))
                       .collect(toList());
    }
    

    注意所需的静态导入:

    import static java.util.Comparator.comparing;
    import static java.util.stream.Collectors.toList;
    

    【讨论】:

      【解决方案2】:

      使用Comparator.comparing辅助方法:

      Collections.sort(pList, Comparator.comparing(Person::getStartDate));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-26
        • 2018-12-14
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        • 2018-05-24
        • 1970-01-01
        相关资源
        最近更新 更多