いくつかの複雑な計算結果を保持するこの期間の期間(開始、終了)とカウンタによって定義される一連のデータ構造を格納する必要があります。次のようなデータ構造の単純化された定義は次のとおりです。私は明確なPeriods
によって定義されたCounterBag
オブジェクトを保持しているコレクションを持っている必要がありどのJavaコレクションを使用できますか?
public class Period {
public DateTime start;
public DateTime end;
// accessors
// ...
}
:
public class CounterBag {
private Period period; // collection key
private Counter counter;
// accessors
// ...
}
Period
は同じくらい簡単です。 long timeInMillis
によってコレクションが効率的なルックアップを提供する必要があるので、HashMap
は実際にはオプションではありません。equals
とhashcode
を上書きしたくないので(どちらも必要です)。コレクションはPeriod
(終了日まで)でソートする必要があります。 Period
は、ルックアップを実行する部分には知られていない柔軟な持続時間です。
Java標準APIまたはいくつかのオープンソースライブラリには、それを解決するのに役立つ既定のコレクションがありますか?ソートされたセットまたは並べ替えられたマップのある種類のもので、日付による効率的なルックアップを実装できます。日付による検索ではCounterBag
が返され、日付はPeriod
になります。
あなたの提案を気に入ってください。
期間は重複していますか? –