缓存的数据结构(Key = DateTime, Value = decimal)

本文关键字:Value decimal DateTime 缓存 数据结构 Key | 更新日期: 2023-09-27 18:09:56

我有一个计算员工一天工作时间的函数。但是,它很慢,因为它考虑了时间和其他因素。

我想我可以通过缓存一天中的小时数来优化这一点,并且只在更改时更新。

我正在寻找可以快速完成的东西:

Set(date,hours)
HasHoursFor(date)
GetHoursFor(date)

我应该用什么呢?

我可以使用Dictionary,但我想知道是否没有某种哈希方式来设置,获取和快速包含。

缓存的数据结构(Key = DateTime, Value = decimal)

您可以使用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等。