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<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 に答える