Java8 лямбда: сортировать поток в обратном порядке? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть этот список, который я хочу заказать в резервном порядке, но я не нашел ни одной функции .reversed() в помощнике по автозаполнению

 myMenus(user)
                .stream()
                .filter(mps ->  mps.get1PercentageChange() > 0 &&
                                mps.get2PercentageChange() > 0 &&
                                mps.get3PercentageChange() > 0 &
                                mps.get4PercentageChange() > 0)
                .sorted(comparing(mps -> mps.getDailyPercentageChange()))
                .collect(toList());

Я также пытался:

myMenus(user)
        .stream()
        .filter(mps ->  mps.get1PercentageChange() > 0 &&
                        mps.get2PercentageChange() > 0 &&
                        mps.get3PercentageChange() > 0 &
                        mps.get4PercentageChange() > 0)
        .sorted(comparing(mps -> mps.getDailyPercentageChange()).reversed())
        .collect(toList());

но у меня ошибка компиляции:

Cannot infer type argument(s) for <T, U> comparing(Function<? super T,? 
     extends U>)

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Это проблема вывода типа.Вам нужно будет помочь компилятору.

несколько вещей, которые вы можете попробовать:

.sorted(comparing(T::getDailyPercentageChange).reversed())

или

.sorted(comparing((T mps) -> mps.getDailyPercentageChange()).reversed())

Где T - это тип элементовсравниваемый.

0 голосов
/ 01 июня 2018

Comparator s имеет метод reversed для получения обратного порядка, поэтому:

.sorted(comparing(mps -> mps.getDailyPercentageChange()).reversed())

должно работать.

...