0

我正在寻找一个参考示例,说明如何读取列表中的时间,并返回“下一个”发生的时间。

我正在开发一个计划应用程序,但目前我正在做一堆非常嵌套的if语句,看起来像这样:

if (Time.compare(bus1.getTime(), currentTime) > 0) {
                setTimeLabelLOY(bus1);
            } else {
                if (Time.compare(bus2.getTime(), currentTime) > 0) {
                    setTimeLabelLOY(bus2);
                } else {
                    if (Time.compare(bus3.getTime(), currentTime) > 0) {
                        setTimeLabelLOY(bus3);
                    } else {
                        if (Time.compare(bus4.getTime(), currentTime) > 0) {
                            setTimeLabelLOY(bus4);
                        } else {
                            if (Time.compare(bus5.getTime(), currentTime) > 0) {
                                setTimeLabelLOY(bus5);
                            } else {
                                if (Time.compare(bus6.getTime(), currentTime) > 0) {
                                    setTimeLabelLOY(bus6);

显然,我的Bus课程包含Time我硬编码的元素。我宁愿简单地阅读时间列表并输出下一个时间。或者也许制作一个时间数组并根据当前时间对它们进行排序?

任何有关如何更好地做到这一点的建议或示例将不胜感激。

4

1 回答 1

1

如果您将所有总线存储在 List 中,您可以使用:

List<Bus> buses = new ArrayList<Bus>();
buses.add(bus1);
// etc

for(Bus bus : buses) {
    if(Time.compare(bus.getTime(), currentTime) > 0) {
        setTimeLabelLOY(bus);
        break;
    }
}

您还可以将所有总线数据存储在 SQLite 数据库中,然后使用如下简单查询:

SELECT * FROM Buses WHERE time > currentTime LIMIT 1;
于 2013-01-26T01:13:03.957 回答