有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

值在范围内时返回java键

我有一个大数据集,其中的值是按递增顺序排序的非重叠范围。范围之间有孔,可以将键(类型为长键)指定给多个范围:

[100,300] K1
[310,400] K1
[401,600] K2
[650,1000] K3
...

我需要找到一个给定值的键。如果值不属于任何范围,我应该返回0

我的方法是建立

NavigableMap<Long, Range> map = new TreeMap<>();

然后

map.put(K1, new Range(100,300);
...

这将生成一个按键排序的相当大的地图。这不是我想要的,因为我希望有一个按范围值排序的映射,这样我就可以轻松地进行二进制搜索。我的问题是,我不知道如何使用此映射来查找给定值的键。例如,值101应该返回K1,500应该返回K2,301应该返回0。使用NavigableMap有没有办法实现我想要的,或者我使用了错误的方法


共 (0) 个答案