java - 在 Java 中使用 For 循环减少代码重复
问题描述
for (Aircraft aircraft : landingQueue) {
if (aircraft.hasEmergency()) {
return aircraft;
}
}
for (Aircraft aircraft : landingQueue) {
if (aircraft.getFuelPercentRemaining() <= 20) {
return aircraft;
}
}
for (Aircraft aircraft : landingQueue) {
if (aircraft instanceof PassengerAircraft) {
return aircraft;
}
}
return landingQueue.get(0);
所以我的程序运行队列中的飞机列表,并将根据任务的重要性返回一个。例如,它将首先检查landingQueue ArrayList 以查看是否有任何飞机处于紧急状态,如果找不到,则检查燃油少于20 的飞机,依此类推。有没有一种简单的方法可以减少 for 循环和 if 语句的重复?非常感激
解决方案
另一种方法可能是根据您的优先标准对列表进行排序
public Aircraft returnOneBasedOnImportance(){
Comparator<Aircraft> byEmer = Comparator.comparing(a -> !a.hasEmergency());
Comparator<Aircraft> byFuel = Comparator.comparing(a -> !(a.getFuelPercentRemaining() <= 20));
Comparator<Aircraft> byType = Comparator.comparing(a -> !(a instanceof PassengerAircraft));
return landingQueue.stream()
.sorted(byEmer.thenComparing(byFuel).thenComparing(byType))
.findFirst().get();
}
推荐阅读
- c# - 将数据库连接到 .net core MVC 项目
- node.js - 如何验证电子邮件是否已经在 MongoDB | 节点
- python - 为 Web 应用程序编写测试
- javascript - Angular 7 - 上传多个文件以及数据并报告进度
- seo - 将 opencart 1.5.6 迁移到 3.0.2.0 会影响 seo?
- typescript - 如何在 JSON stringify 中使用变量作为字段名称?
- c# - 如果使用 EPplus 的行,如何插入范围内的列?
- javascript - 找出由于使用不受支持的功能而导致哪些软件包中断的最佳技术是什么?
- javascript - 如何通过多个名称选择检查选定元素的值
- python - 类型错误:fit_transform() 缺少 1 个必需的位置参数:'raw_documents'