java - 具有日期范围的 HashMap

标签 java data-structures hashmap

我需要根据多键非常快找到一些值。 key 由以下部分组成: < Int userId, String measureName, Date startDate, Date endDate > 并且该值为 double 值。

问题是我必须要求指示日期的值,而不是日期范围。 所以如果我要一个userId , 一个 measureName和一天,数据结构必须回答一天介于 startDate 之间的值。和 endDate (日期范围之间没有重叠)。

我不明白哪个是更好的数据结构来实现这个。哈希表? TreeMap ?多键映射?范围图?帮助! :)

最佳答案

我认为您应该使用 TreeMap 和如下方法: http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#floorEntry(K) http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#higherEntry(K) 但在比较函数中只使用一个日期 - startDate 或 endDate。由于这些范围不重叠,这应该不是问题,并且可以使用 TreeMap 中提到的方法。

例如:如果您决定在比较中使用 endDate(以及除其他日期之外的其他字段),那么您应该使用方法 floorEntry

关于java - 具有日期范围的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372954/

相关文章:

java - hashCode唯一性

java - Spring 形式的 Hashmap

java - 写入Excel文件后抛出文件未找到异常

java - 服务或属性(property)未注册错误

java - 我使用了保留字吗?

java - 删除元素后排序循环链表未更新?

java - 使用哪种数据结构?索引数据结构乱序插入

algorithm - 10 个元素的二进制搜索复杂度是 0(log 10) = 1 ,但所需的比较是 4

java - HashMap 只打印最后一个条目

java - 多层 Hashmap 和 Arraylist