我正在寻找一个如何在列表中读取时间的参考示例,并返回“下一个”发生的那个。
我正在制作一个计划应用程序,但目前我正在做一堆非常嵌套的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
个元素。我宁愿只读一个时间列表并输出下一个。或者可以制作一个数组,并根据当前时间对它们进行排序?
非常感谢任何关于如何更好地做到这一点的建议或例子。
答案 0 :(得分:1)
如果您将所有公交车存放在列表中,您可以使用:
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;