【发布时间】:2019-01-07 08:44:07
【问题描述】:
问题
从下面的项目列表中,我需要通过识别具有给定值的键范围来访问该项目,例如让我们说如果值是 2.1.1,它的单位是度、分和秒,我需要找到键 0.0.0- 30.0.0 性能是重中之重。
key: 0.0.0-30.0.0 value: x-y-z
key: 30.0.0-60.0.0 value: y-x-z
key: 60.0.0-90.0.0 value: z-y-z
解决方案 1: 到目前为止我尝试过的以下解决方案
如下重新创建新的键/值(json)文件
key: 0.0.0 value: x-y-z
key: 0.0.1 value: x-y-z
.
key: 0.0.59 value: x-y-z
.
key: 0.1.0 value x-y-z
key: 0.1.1 value x-y-z
key: 30.0.0 value: y-x-z
.
.
key: 30.0.59 value: y-x-z
.
key: 30.1.0 value: y-x-z
key: 30.1.1 value: y-x-z
key: 30.1.2 value: y-x-z
.
.
key: 30.1.59 value: y-x-z
key: 30.2.0 value: y-x-z
key: 30.2.1 value: y-x-z
key: 30-2.3 value: y-x-z
.
.
key: 60.0.0 value: z-y-x
key: 60.0.1 value: z-y-x
key: 60.0.2 value: z-y-x
.
.
key: 60.0.59 value: z-y-x
key: 60.1.0 value: z-y-x
key: 60.1.1 value: z-y-x
.
.
问题 上述解决方案的问题是文件大小将增加,这导致我的紧凑型应用程序中的堆溢出
解决方案2
?
【问题讨论】:
-
范围是否重叠?是否有未映射的范围?我的第一个想法是将它们放入一个排序数组中,然后在其中进行二进制搜索。
-
你的问题不够清楚。因此,您要做的是根据示例中从 0.0.0 到 30.0.0 的键范围获取键/值对的集合/列表,对吗?
-
Json 文件包含格式为 degfrom.minfrom.secfrom-degto.minto.secto 的密钥,输入将类似于 deg1.min1.sec1 我想要的是快速找到一个密钥范围其中 deg1.min1.sec1 属于
-
键范围在排序数组中的二进制搜索可能很昂贵,因为这些不是直接数字,因此解析从 DMS 转换为十进制然后执行比较可能会出现性能问题,此函数每秒触发一次
-
是否可以在内存中加载json文件内容。 json文件有多大?