缓存的数据结构(Key = DateTime, Value = decimal)
本文关键字:Value decimal DateTime 缓存 数据结构 Key | 更新日期: 2023-09-27 18:09:56
我有一个计算员工一天工作时间的函数。但是,它很慢,因为它考虑了时间和其他因素。
我想我可以通过缓存一天中的小时数来优化这一点,并且只在更改时更新。
我正在寻找可以快速完成的东西:
Set(date,hours)
HasHoursFor(date)
GetHoursFor(date)
我应该用什么呢?
我可以使用Dictionary
,但我想知道是否没有某种哈希方式来设置,获取和快速包含。
您可以使用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
等。