如何在整数范围列表中高效搜索?
我有一些包含重复值的范围列表。如果输入数字在范围内,我想获得值。
例如
注意:开始和结束范围不重叠。
- 输入 260 预期输出 B
- 输入 195 预期输出 A
目前,我正在 HashMap
- 循环遍历 Map 的所有键,
- 拆分每个键,
- 转换为 int 并
- 检查给定的数字是否在范围内。
- 如果是,则获取该键的值
我认为在 Java 中可能有一些更有效的方法来处理这个问题。
任何帮助将不胜感激。
最佳答案
您可以使用Guava的RangeMap
:
RangeMap<Integer, Character> rangeMap = TreeRangeMap.create();
rangeMap.put(Range.closed(10, 75), 'A');
rangeMap.put(Range.closed(95, 200), 'A');
rangeMap.put(Range.closed(300, 455), 'B');
rangeMap.put(Range.closed(570, 650), 'C');
rangeMap.put(Range.closed(201, 250), 'A');
rangeMap.put(Range.closed(255, 275), 'B');
Character character = rangeMap.get(61);
Character character2 = rangeMap.get(244);
Character character3 = rangeMap.get(270);
System.out.println(character);
System.out.println(character2);
System.out.println(character3);
输出:
A
A
B
注意:由于某种原因,它被标记为@Beta
https://github.com/google/guava/issues/3376所以我想确保它是否用于生产用途。
关于java - 如何有效地在整数范围列表中搜索 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67647996/