Замените 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;
    }

person amal    schedule 15.06.2015    source источник


Ответы (2)


Эквивалентная ссылка на метод будет 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;
person assylias    schedule 15.06.2015

Используйте Comparator.comparing вспомогательный метод:

Collections.sort(pList, Comparator.comparing(Person::getStartDate));
person Tagir Valeev    schedule 15.06.2015