java - 大量switch case如何优化?

标签 java switch-statement

如何优化拥有大量 switch case 的情况?还有其他方法可以完成我想做的事情吗?

我有一个时间 slider ,该 slider 使用当前 slider 所在位置的值 (1-24) 更新变量 currentTime 并调用 updateTime() 方法。在此方法中,我有 1 - 24 个开关案例(本例中只有 3 个)。我可以用更简单的方式来完成此操作,而不是制作 24 个开关盒吗?

private void updateTime() {
    switch (currentTime) {
        case 1:
            hourlyData = weatherAPI.HourlyReport(1);
            setHourlyData();
            break;
        case 2:
            hourlyData = weatherAPI.HourlyReport(2);
            setHourlyData();
            break;
        ...
        case 24:
            hourlyData = weatherAPI.HourlyReport(24);
            setHourlyData();
            break;
        default:
            System.out.println("Oops");
            break;
    }
}

--

public Map HourlyReport(int hour) {
    Hourly hourly = new Hourly(fio);
    //In case there is no hourly data available
    if (hourly.hours() < 0) {
        System.out.println("No hourly data.");
    } else {
        hourlyData.put("Temp", hourly.getHour(hour).temperature()); // Temperature
        hourlyData.put("TempFeel", hourly.getHour(hour).apparentTemperature()); // Feel Temperature
        hourlyData.put("Humidity", hourly.getHour(hour).humidity()); // Humidity
        hourlyData.put("WindSpeed", hourly.getHour(hour).windSpeed()); // Wind Speed
        hourlyData.put("Precip", hourly.getHour(hour).precipProbability()); // Precipitation
        hourlyData.put("TimeStamp", hourly.getHour(hour).time());// TimeStamp
    }
    return hourlyData;
}

最佳答案

在这种情况下使用开关是不合理的。使用简单的 if

if (currentTime > 0 && currentTime < 25) {
    hourlyData = weatherAPI.HourlyReport(currentTime);
    setHourlyData();
} else {
    System.out.println("Oops");
}

关于java - 大量switch case如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819508/

相关文章:

java - 无法在堆大小较大的 64 位 Windows 7 中运行 64 位 JVM

java - 调用方法完全没有任何作用?

javascript - 是否可以在 switch 语句中使用 .contains() ?

objective-c - 将按钮标签更改为关闭声音的开关,我想显示一个开关(对象,切换)

assembly - PIC汇编器中如何进行bank切换?

java - 在 Java 中引用来自匿名类的变量

java - @Transactional 不适用于 JPA 实体

java - Java中有什么好的动态SQL构建器库吗?

javascript - 如何同时运行两个具有不同功能的案例?

java - switch case 语句中的 boolean 逻辑 - Java