en *_*ris 5 collections lambda functional-programming java-8 java-stream
我有这个列表,我想按保留顺序订购,但我没有.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());
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
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());
Run Code Online (Sandbox Code Playgroud)
但后来我有编译错误:
Cannot infer type argument(s) for <T, U> comparing(Function<? super T,?
extends U>)
Run Code Online (Sandbox Code Playgroud)
这是一个类型推断问题。你需要帮助编译器。
你可以尝试一些事情:
.sorted(comparing(T::getDailyPercentageChange).reversed())
Run Code Online (Sandbox Code Playgroud)
或者
.sorted(comparing((T mps) -> mps.getDailyPercentageChange()).reversed())
Run Code Online (Sandbox Code Playgroud)
T被比较的元素类型在哪里。
Comparator有一个reversed获得反向排序的方法,所以:
.sorted(comparing(mps -> mps.getDailyPercentageChange()).reversed())
Run Code Online (Sandbox Code Playgroud)
应该管用.