我有一个TreeMap<LocalDate, TreeSet<EmployeeObject>
,其中包含Date
作为密钥,以及Set
所有员工的出生日期。我想在两个日期之间迭代Map
,例如22/02/15 to 27/02/15
。是否有可能有效地完成它而不必遍历整个Map
?
(编辑)附加问题:作为替代方案,您认为Trie
或其他一些数据结构更适合这种情况,而不是Map
存储所有员工的出生日期,然后再存储日期在范围之间查询它们?
答案 0 :(得分:2)
这完全取决于您使用的地图类型。如果你使用HashMap,没有。如果您使用TreeMap,则是(请参阅它实现的the NavigableMap接口)。如果您使用Guava RangeMap,尤其是是。
答案 1 :(得分:1)
使用TreeMap作为实现(或导入数据)。它将允许您访问NavigableSet以获取键,或者在请求范围内(可以正常迭代)的Map的子地图视图。它们是视图,因此数据不会重复。