2017-06-30 7 views
1

System millisに基づいて時間が格納されたクラスを含むサイズNのarrayListがあります。私は全体のarrayListを通過し、1時間のチャンクに分割したい。過去24時間、今から24時間前に戻ることができます。しかし、最後の24時間のウィンドウから落ちるアイテムがあるかもしれません。含まれている長い "curTime"クラスフィールドに基づいてNのリストを24時間に分割します。

私はSOに関するアルゴリズムの質問をしているとは思えません。助けてくれてありがとう。

大ArrayListのは、基本的には、この項目で構成されています

public class Item { 
    private long date; 
    private long otherData; 
} 

私が使用してアイテムの日付を保存しています:

System.currentTimeMillis() 

を繰り返しますが、私は、ArrayListのを分割したいですのアイテムを、保存時にcurrentTimeMillis()を使用した「保存日」に基づいて、アイテムの24個の個別の配列リストに追加します。

最初の/最新の/最新のバケットが正確に次の時間のマークで終了し、その後1時間ごとに終了した場合でも、よりクールです。言い換えれば、私が午後7時25分にリクエストを行うと、最初のアイテム "バケツ"には過去25分間に保存されたエントリのみが含まれていると素晴らしいでしょう。その後、次の23インチの「バケツのバケット」が1時間(6:00 PM、5:00 PM ...)に分解されました。

もう一度おねがいします。

答えて

1

私は、現在のシステム時刻をDateまたはオブジェクトに変換します。それを使って、現在の時間の分を得ることができます。私は時間の始めに戻り、1時間ごとに繰り返すことができます。あなたは、各セクションのために必要と引き算をミリ秒単位でmyDate.getTime()new Date(milliseconds)

図アウトを使用して簡単にDatemillisecondsの間で行くことができます。

1

ブロックを分割する1つの方法は、時刻をカレンダーに変換し、HOUR_OF_DAYをチェックすることです。バケット項目のarrayListに対応する時間のHashMapを作成し、単純にループスルーして対応するリストに配置します。

関連する問題