java - 如何有效地在整数范围列表中搜索 - java

标签 java list hashmap range

如何在整数范围列表中高效搜索?

我有一些包含重复值的范围列表。如果输入数字在范围内,我想获得

例如

<表类=“s-表”> <标题> 范围开始 范围结束 值 <正文> 10 75 一个 95 200 一个 300 455 B 570 650 C 201 250 一个 255 275 B

注意:开始和结束范围不重叠。

  • 输入 260 预期输出 B
  • 输入 195 预期输出 A

目前,我正在 HashMap 中保存并存储 {“10-75” , A} {'95-200”, B}... 我是

  • 循环遍历 Map 的所有键,
  • 拆分每个键,
  • 转换为 int 并
  • 检查给定的数字是否在范围内。
  • 如果是,则获取该键的值

我认为在 Java 中可能有一些更有效的方法来处理这个问题。

任何帮助将不胜感激。

最佳答案

您可以使用GuavaRangeMap:

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/

相关文章:

java - 如何找出 JVM 对我的代码应用了哪些优化?

java - HashMap 通过 2 种不同的方法进行操作 - 多线程和并发

list - 如何列出特定 Julia 函数的所有重载?

java - 为什么在 Java 中不能有 "List<List<String>>"?

java - 如何从具有多种对象类型的集合中只读取一种类型的特定对象

java - Hibernate:如何使用 HQL 设置 NULL 查询参数值?

java - JSON 响应不完整,但在浏览器中正常

java - 创建数组列表

java - 如何将 HashMap 转换为可缓存的 map

java - 从 HashMap 中删除特定条目的简短方法