【发布时间】:2020-06-15 11:16:59
【问题描述】:
我有一个排序的对象列表(来自已排序):List LocationDetail
---------------------------------------------------------------------------------------------
| id | Place | Name | From | To | Address
---------------------------------------------------------------------------------------------
| 2 | Office | Mark | 2020-06-02 08:00:00 | 2020-06-02 19:59:59 | Office_Address |
| 4 | Office | John | 2020-06-02 08:00:00 | 2020-06-02 19:59:59 | Office_Address |
| 1 | Home | Mark | 2020-06-01 20:00:00 | 2020-06-02 07:59:59 | Home_Address |
| 3 | Home | John | 2020-06-01 20:00:00 | 2020-06-02 07:59:59 | Home_Address |
---------------------------------------------------------------------------------------------
我想搜索以下内容的详细信息:
地点、名称、位置时间
如果 locationTime 介于 From 和 To 之间,则返回该行。 (地点、名称、从和到的组合是唯一的)
我的解决方案:
- 将属性列表从时间提取到列表
- 编写了自定义二分搜索实现:方法 LocalDateTime[] getFirstLastIndex(List fromTimes, LocalDateTime locationTime) 该方法返回locationTime的第一个和最后一个索引(对于重复值(From))
- 搜索列表 如果 firstIndex > listSize/2 firstIndex = firstIndex,LastIndex = listSize-1 如果firstIndex
我的问题:
有没有更好的解决方案?
【问题讨论】:
标签: java algorithm collections binary-search