2015-06-15 29 views
2

请帮我理解如何用下面方法的方法引用替换lambda表达式。用方法参考替换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; 
    } 

回答

7

等效方法参考是comparing(Person::getStartDate) - 注意,在特定情况下,你可以在流直接进行排序。也没有一点限制你的方法为只接受LinkedHashSet秒 - 任何集合会做:

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; 
4

使用Comparator.comparing helper方法:

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