私は、日付間で何千もの比較を実行して、それらが同じ月にあるかどうかを確認するプロジェクトに取り組んでいます。それを行う最も効率的な方法は何でしょうか。
これは私のコードが正確にどのように見えるかではありませんが、ここに要点があります:
List<Date> dates = getABunchOfDates();
Calendar month = Calendar.getInstance();
for(int i = 0; i < numMonths; i++)
{
for(Date date : dates)
{
if(sameMonth(month, date)
.. doSomething
}
month.add(Calendar.MONTH, -1);
}
この比較が何千回も行われる場合、日付ごとに新しいCalendar
オブジェクトを作成することはかなり大きなオーバーヘッドのように思われるので、少しごまかして非推奨の方法Date.getMonth()
を使用したいと思います。Date.getYear()
public static boolean sameMonth(Calendar month, Date date)
{
return month.get(Calendar.YEAR) == date.getYear() && month.get(Calendar.MONTH) == date.getMonth();
}
この方法が最も速いように見えるので、私はこの方法を使用することにかなり近いですが、より速い方法はありますか? そして、メソッドが非推奨になっているので、これは愚かな方法ですか?Date
注:このプロジェクトは常にJava7で実行されます