java - Java 中的联合流
问题描述
我认为这个问题没用,但我找不到如何将这段代码合并到一行
我有活跃的信使列表。我正在尝试在此列表中查找所有免费快递员,然后找到距离最短的快递员
List<Courier> afterCheckIsFree = activeCouriers.stream().filter(Courier::isFree).collect(Collectors.toList());
final Optional<Courier> courierWithMinDistance = afterCheckIsFree.stream()
.filter(n -> n.getId().equals(CourierFinder.minDistanceUsingCourier(Point.ZERO_POINT, afterCheckIsFree).getId())).findFirst();
非常感谢!
解决方案
更改minDistanceUsingCourier
方法以返回单个信使的距离(而不是信使列表的最小距离),然后:
final Optional<Courier> courierWithMinDistance = activeCouriers.stream()
.filter(Courier::isFree)
.min(comparing(c -> minDistanceUsingCourier(Point.ZERO_POINT, c)));
推荐阅读
- r - 更新函数内的模型因子水平无法正常工作
- angular - 角度错误 TS2304:找不到名称“配置”
- ffmpeg - 使用 FFmpeg 报告重复的帧
- python - 自我模型上的多对多:如何向此关系添加新实例
- rascal - 优先级声明是否可以消除替代词汇之间的歧义?
- sublimetext3 - 在 ST3 Win10 中显示/隐藏选项卡的键盘快捷键
- angularjs - 何时使用 AngularJS `$onInit` Life-Cycle Hook
- jquery - 如何从 Jquery 克隆的 div 中编写删除脚本
- spring-mvc - @RequestBody 不绑定复杂对象
- swift - 创建切换按钮的问题