java中的时间范围

java中的时间范围,java,Java,在Java中,有没有办法将时间范围存储为Hashmap中的键?我有一个HashMap,我存储时间范围。例如: 我输入0-50范围作为键,对于该键,我将存储一些其他对象作为值。现在,当我说10时,我应该能够得到该键的相应值。 0-50之间的任何值都应获得该对象 Map map = new HashMap(); map.put(0-50,"some object") map.put(51-100,"some other object") 现在,当我说map.get(10)它应该能够得到“某个对象”

在Java中,有没有办法将时间范围存储为
Hashmap
中的键?我有一个
HashMap
,我存储时间范围。例如:
我输入0-50范围作为键,对于该键,我将存储一些其他对象作为值。现在,当我说10时,我应该能够得到该键的相应值。
0-50之间的任何值都应获得该对象

Map map = new HashMap();
map.put(0-50,"some object")
map.put(51-100,"some other object")

现在,当我说
map.get(10)
它应该能够得到“某个对象”。请建议如何执行此操作?

您需要将范围映射到单个键,为什么不使用诸如rangemanager对象之类的对象,该对象返回最小值和最大值之间的任意值,例如键1。或者,您可以使用for循环将someobject作为1到50之间所有键的值,但在我看来这是一种浪费。

如果这是一个不重叠的等距范围,即范围按50分割,您可以通过维护最大值的散列来解决此问题,如

50-“某些对象”,100-“某些其他对象”等

如果输入为10,则导出50的立即倍数并获取该键的值

你可以直接得到50的倍数

  • 输入时采用模式,即输入90,即90%50=40
  • 用50计算步骤1结果的差值。i、 e.50-40=10
  • 将步骤2结果添加到输入,即90+10=100

  • 我不会用地图,而是试着用地图。R树是为索引空间数据而创建的树结构。它存储矩形。它通常用于测试点(坐标)是否位于其他几何图形中。这些几何图形由矩形近似,并存储在树中

    要存储矩形(或有关矩形的信息),只需保存左下角和右上角的坐标。在您的情况下,这将是时间跨度的下限和上限。你可以这样想,就好像坐标的所有y值都是0。然后,您可以使用您的时间值查询树

    当然,您会在每个叶上保存值(时间跨度/矩形)


    在谷歌上搜索
    r-treeJava
    得到了一些令人振奋的结果。实现您自己的R-tree并不简单,但是如果您理解在插入/删除时重新排列树的原理,那么就不会太复杂了。在一维的情况下,它可能会变得更简单

    假设:非重叠范围

    可以将范围的起点和终点存储在树集中。起点和终点是分别存储开始时间和结束时间以及(对)对象的引用的对象。您必须定义比较函数,以便对象按时间排序

    可以使用TreeSet的floor()或天花()函数获取对象

    请注意,即使在端点(例如3-6和6-10),范围也不应重叠


    这将增加范围插入和查询的日志复杂性。

    首先获取密钥,并将其拆分为“-”字符。然后,测试您的值是否在范围内。@nhahtdh+1回答此问题。如果是这样的话,在得到值时,您将得到多个结果。@nhahdh我不明白您的问题?你能不能更详细地描述一下?你能不能先从3-50的物体A,然后从13-65的物体B?在这种情况下,我们有一个从13-50的重叠,它可以返回A和B。不,它不会发生!!!谢谢你的好问题。我想先这样做。但是我必须循环所有的值。如果没有其他方法,我只会使用它。这似乎有点过分了。不管怎样,你知道这个算法的任何实现吗?@nhahdh如果你能找到一个实现(我不知道Java中有一个实现),我不会说这是过分的。该树具有很好的查找复杂性,只需要两个double+对象引用就可以使用空间