我HashMap
有数百万条目.
需要检索其键与一组特定条件匹配的所有条目(在这种情况下,每个键都是一个具有两个整数属性的对象;我需要检索其中每个整数落在指定范围内的所有键).
迭代所有这些键的最快,最有效的方法是什么?
更新: 在这种特殊情况下,虽然我没有预先指定它,但键中的第一个整数优先于第二个整数.
HashMap不是用于查找位于特定范围内的键的有效数据结构.通常,您可以在哈希映射中有效找到的唯一键是具有与您拥有的相同哈希的键(即相等键).
要查找位于特定范围内的键,最好使用某种类型的SortedMap,例如TreeMap,然后可以使用SortedMap.subMap(低,高)视图方法查看.
至于基于两个键找到一个键,那就更难了.你最好的选择可能是迭代第一个整数范围的subMap,然后检查每个整数是否在指定范围内.这至少将扫描限制为具有该范围内的整数之一的键.尝试根据您可能必须搜索的可能范围内具有更自然的值分布的整数对地图进行排序.