首页 > 解决方案 > 在 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 语句的重复?非常感激

标签: javafor-loopduplicates

解决方案


另一种方法可能是根据您的优先标准对列表进行排序

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();
}

推荐阅读