我正在做一个项目,该项目将在日期之间进行数千次比较,看看它们是否在同一个月,我想知道最有效的方法是什么。
这不完全是我的代码的样子,但要点如下:
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
方法已被弃用?注意:此项目将始终使用 Java 7 运行