データ構造を再設計する必要がある問題が発生しました。前の日付/文字列(ハッシュ)のマップ
今は、new Info()
のメンバーであるdate
であるキーを使用して、時間順に多くの情報を保持し、ハッシュマップに保持しています。
hashMap.put(date.toString(), new Info(date, ...))
日付が...
2012-02-15 22:45:00.0
2012-02-15 22:50:00.0
2012-02-15 22:55:00.0
2012-02-15 23:00:00.0
間隔5分である
2012-02-25 12:10:00.0
2012-02-25 12:15:00.0
これまでのところ、キーを取得することにより、情報を得るのは簡単だったと速度が一定の時間が
hashMap.get(date.toString())
これまでのところは良い、私はそこにあるハッシュマップから日付を取得していたときであります。しかし今、情報の時系列順にギャップが存在する可能性があります。下の例では2012-02-15 22:50:00.0
が見つからないので、その日付を検索するとNPEを取得します。
その場合、私はより前にに最も近い時刻を見つけなければなりません。
2012-02-15 22:45:00.0
2012-02-15 22:55:00.0
2012-02-15 23:00:00.0
...
if (hashMap.get(date.toString()) != null) {
// found it
} else {
return previousTime(date.toString())
}
私は最も近い以前の日付を見つけるまで、私は、のLinkedHashMapとpreviousTime
可能性だけiterate over the collectionを作ることができます。しかし、最悪の場合はO(n)の複雑さです。 そのような種類のタスクのためのより良いデータ構造があるか、LinkedHashMapだけを使用できますか? SortedMapはhereのように?しかし、最初のput
はコストがかかり、より多くのメモリが必要になります。
ありがとうございます。私はそれを使用して 'lowerKey()'が動作し、簡単に前の日付を見つけました – Skyzer