2015-06-15 33 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));