Java 检查事件(eventName(String)、eventStartTime(LocalDate)、eventEndTime(LocalDate))插槽是否为空

Java 检查事件(eventName(String)、eventStartTime(LocalDate)、eventEndTime(LocalDate))插槽是否为空,java,Java,我有一个事件类: public class Event { private String eventName; //getters & setters present private LocalTime eventStartTime; //getters & setters present private LocalTime eventEndTime; //getters & setters present } 从数据库中我得到一些事件列表(列表中的每个元素

我有一个事件类:

public class Event {
  private String eventName; //getters & setters present
  private LocalTime eventStartTime; //getters & setters present
  private LocalTime eventEndTime; //getters & setters present
}
从数据库中我得到一些事件列表(列表中的每个元素都有
eventName
eventStartTime
eventEndTime

我想从数据库列表中添加不能重叠的新事件
eventStartTime
&
eventEndTime

包含2个元素的事件列表

Element 1: eventStartTime: 09:00
           eventEndTime: 09:30

Element 2: eventStartTime: 10:30
             eventEndTime: 11:30
示例1:我想添加元素3:
eventStartTime
:09:20
eventEndTime
:09:45

我的方法应该返回false。 由于
eventStartTime
(9:20)和
eventEndTime
(09:45)与元素1重叠(
eventStartTime
:09:00,
eventEndTime
:09:30)

示例2:我想添加元素3:
eventStartTime
:09:45
eventEndTime
:10:15

我的方法应该返回true。
由于不存在重叠时间

首先,您应该编写一个方法来检查
LocalTime
的两个范围是否重叠:

static boolean overlap(LocalTime start1, LocalTime end1, LocalTime start2, LocalTime end2) {
    return (start1.isBefore(end2) || start1.equals(end2)) && (end1.isAfter(start2) || end1.equals(start2));
}
然后,您可以使用streams在列表中运行,以检查给定范围是否与列表中的任何范围重叠:

boolean overlapsAnyEvent = eventList.stream().anyMatch(x -> overlap(
    x.getStartTime(),
    x.getEndTime(),
    eventToBeAdded.getStartTime(),
    eventToBeAdded.getEndTime()
));

您的方法可以返回
!Overlappanyevent
以指示是否可以添加事件。

您是否尝试自己解决此问题?如果是的话,你能公布你的代码吗?