我有一个计算一天员工工作时间的功能。但是,它很慢,因为它考虑了携带时间和其他事情。
我想我可以通过缓存一天中的小时数来优化这一点,并且只在更改时更新。
我正在寻找能够迅速做到的事情:
Set(date,hours)
HasHoursFor(date)
GetHoursFor(date)
我应该使用什么?
我可以使用Dictionary
,但我想知道是否没有某种哈希方式可以快速设置,获取和包含。
答案 0 :(得分:1)
您可以使用Dictionary<DateTime,int>
并根据日期缓存小时数,如下所示:
Dictionary<DateTime,int> dict = new Dictionary<DateTime,int>();
void Set(DateTime date, int hours)
{
if (dict.Contains(date)) dict.Remove(date);
dict.Add(date.Date,hours);
}
bool HasHoursForDate(DateTime date)
{
return dict.Contains(date.Date);
}
int GetHoursForDate(DateTime date)
{
return dict[date.Date];
}
Set(DateTime.Now,8);
我将日期标准化,以便它只是日期并且不关心时间部分,否则会导致比较。我还假设您有整整几个小时,否则您可能希望将int
更改为double
等。