我有一个已排序的对象列表(从头开始排序):列表位置详细信息
---------------------------------------------------------------------------------------------
| 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之间,请返回该行。 (位置,名称,从和到组合是唯一的)
我的解决方案:
我的问题:有更好的解决方案吗?
由于您不需要在列表中保留重复项,因此,我尝试将其替换为TreeSet
或TreeMap
,它们分别提供subset(fromElement, toElement)
和submap(fromKey, toKey)
之类的方法-每种都有两种风味,在SortedSet / NavigableSet和SortedMap / NavigableMap中声明,因此您可以控制(如果需要)from和2是包含式还是排除式。
这不是很简单(但是仍然值得追求),因为:
LocationDetail
对象以在查询中用作“从”和“到”flatMap
]执行一些submap(from, to).values().stream()