如何按值存储间隔和查找间隔?

时间:2012-12-19 10:35:19

标签: java

我有一个列表,其中有三个对象,假设将其命名为数据。

  1. data [0]有0-6
  2. 数据[1]有6-13
  3. 数据[2]有13-23
  4. 我有一个方法,它有两个参数,一个是starttime,另一个是endtime。 我的要求是如果输入值在第一个对象之间,那么此方法将返回第一个对象。如果输入值位于前两个对象之间,则该方法应返回前两个对象。我怎样才能做到这一点。任何人都可以告诉我吗?

1 个答案:

答案 0 :(得分:4)

假设您没有重叠范围且范围是连续的,如您的示例所示(否则您将需要自己实现):

您可以使用TreeMap存储起始值或范围及其值,例如

TreeMap<Int, Object> map = new TreeMap<Int, Object>();
map.put(0, obj1);
map.put(6, obj2);
map.put(13, obj3);

然后使用TreeMap.floorEntry获取the greatest key less than or equal to the given key

然后你得到:

map.get(0); // obj1
map.get(3); // /obj2
nap.get(22); // obj3

您可以添加一项检查以查看该键是否小于0或大于23且不检查地图中的这些值。

对于您的问题,您可以同时检查starttimeendtime,看看是否有相同的对象。