spr*_*ten 2 java java-8 java-stream
我希望根据某些条件从列表中获取最小或最大项目.下面的摘录总结了我在做什么:
Optional<Person> target;
if(condition){
target = detailedList.stream().min((d1, d2) -> d1.age() + d2.age());
} else {
target = detailedList.stream().max((d1, d2) -> d1.age() + d2.age());
}
Run Code Online (Sandbox Code Playgroud)
它有效,但相当冗长.本质上,我想在流中选择方法min或max.有一个更好的方法吗?
这是另一种方式:
Comparator<Person> comp = Comparator.comparingInt(Person::age);
BinaryOperator<Person> op
= condition ? BinaryOperator.minBy(comp) : BinaryOperator.maxBy(comp);
Optional<Person> target = list.stream().reduce(op);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |