java - 检查一个列表的间隔是否与另一个列表的间隔重叠
问题描述
我有两个带有间隔的列表,即
[2021-06-29T00:00:00.000+03:00/2021-06-30T23:59:00.000+03:00, 2021-07-01T00:00:00.000+03:00/2021-07-06T23:59:00.000+03:00]
[2021-06-25T00:00:00.000+03:00/2021-06-30T23:59:59.000+03:00, 2021-07-01T00:00:00.000+03:00/2021-07-06T23:59:59.000+03:00, 2021-07-06T00:00:00.000+03:00/2021-07-11T23:59:59.000+03:00, 2021-07-11T00:00:00.000+03:00/2021-07-16T23:59:59.000+03:00....]
我想检查第一个元素是否与第二个元素重叠。如果没有重叠,我需要一个列表,其中包含与第一个列表不重叠的间隔。
解决方案
本质上,您需要遍历第一个列表,然后为每个项目遍历第二个列表并检查是否有任何间隔与其重叠。流使这更优雅:
List<Interval> list1 = // some intervals...
List<Interval> list2 = // some more internvals...
List<Interval> result =
list1.stream()
.filter(i1 -> list2.stream().allMatch(i2 -> i1.overlap(i2) == null))
.collect(Collectors.toList());
推荐阅读
- c# - 如何在活动目录中获取用户可以管理(添加/删除用户)的组列表
- python - Python - 升级到 3.9.1 后 bson 导入错误
- excel - 如何从 Google Analytics(分析)报告中获取真实数量的用户
- terraform - icmp 协议入口规则 aws_security_group 资源的 from_port 和 to_port 值?
- arrays - 文件指针数组的分段错误
- google-sheets - 根据所选月份填充日期行
- r - 跨不同标签的闪亮 cicerone 之旅
- javascript - 我只能通过 1/4 的测试
- java - 有没有办法使用 vaadin 8 自定义布局来修改父元素上的元素类属性?
- python - 如何从 DNS Python 响应中提取 SOA DNS 服务器