标签: range-map

获取Java中某个范围内的键值

假设我在Java中有一个地图,如下所示:

{ 
 39:"39 to 41",
 41:"41 to 43",
 43:"43 to 45",
 45:">=45"
}
Run Code Online (Sandbox Code Playgroud)

如果键是按排序顺序(使用treemap或linkedhashmap).现在,如果我尝试获得> = 39且<41的值.那么我应该得到字符串"39到41".如何有效地执行此操作?

java map range-map

20
推荐指数
2
解决办法
1万
查看次数

可以将一系列键映射到值的数据结构

我试图找到一个数据结构,从一系列值中获取特定值并将其映射到一个键.

例如,我有以下条件:

  1. 从1到2.9,我想将它映射到A.
  2. 从4到6,我想将它映射到B.
  3. 从6.5到10,我想将它映射到C.

我的值为5,我想将其映射到一个键.所以基于上述条件,我应该将它映射到B.

Java中是否有任何人可以向我推荐解决问题的数据结构?

目前我使用的哈希表只能将值映射到键.我尝试将值范围映射到哈希表中存在的特定值.但是,我陷入了将值范围映射到特定值的问题.所以现在我试图用另一种方法将值的范围映射到键.有谁知道如何解决这个问题?

编辑:

感谢Martin Ellis,我决定使用TreeMap来解决这个问题.

java dictionary data-structures range-map

18
推荐指数
2
解决办法
1万
查看次数

Scala范围/区间映射结构

我有几乎相同的数据结构中提到的问题,可以将一系列键映射到值,但对于Scala.

也就是说,我希望有一个非重叠的1D范围[a [i],b [i])的可变系统,它将映射到某种值v [i].执行此类工作的标准基础数据结构是红黑树.

我希望它拥有的操作,最好是所有操作都应该具有O(log n)的复杂度:

  • 通过指定其中的任何点来查询并获取给定范围(开始,结束,存储值)或缺少它
  • 在此结构中插入新范围
  • 从结构中删除范围

所以,我想到目前为止,我看到以下变种,所有这些都有其缺点:

  • Java的TreeMap上滚动自己的容器- 快速而肮脏,但由于缺乏适当的维护而长期可能不好
  • 使用Guava的RangeMap - 可能,但在Scala集合世界中会非常尴尬
  • 尝试使用Scala的红黑树实现并尝试自己滚动,但是,我想这很难,因为Scala的TreeMap只是不可变的,并且错过了直接的查找方法,例如Java的TreeMapfloorEntry

我在这里错过了什么吗?是否存在使用Scala中心API扩展基本Scala集合的类似Guava的维护良好的集合扩展库?

强烈相关的问题:

scala range red-black-tree guava range-map

17
推荐指数
1
解决办法
2154
查看次数