我有一个包含三个对象的列表,假设将其命名为数据。
- 数据[0] 有 0-6
- 数据[1] 有 6-13
- 数据[2] 有 13-23
我有一个方法,它有两个参数,一个是starttime
,另一个是endtime
。我的要求是,如果输入值在第一个对象之间,那么此方法将返回第一个对象。如果输入值介于前两个对象之间,则该方法应返回前两个对象。我怎样才能做到这一点。谁能告诉我?
我有一个包含三个对象的列表,假设将其命名为数据。
我有一个方法,它有两个参数,一个是starttime
,另一个是endtime
。我的要求是,如果输入值在第一个对象之间,那么此方法将返回第一个对象。如果输入值介于前两个对象之间,则该方法应返回前两个对象。我怎样才能做到这一点。谁能告诉我?
假设您没有重叠范围,并且范围是连续的,如您的示例(否则您需要自己实现一些东西):
您可以使用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,并且不检查这些值的映射。
对于您的问题,您可以同时检查starttime
并endtime
查看是否得到相同的对象。