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
以指示是否可以添加事件。您是否尝试自己解决此问题?如果是的话,你能公布你的代码吗?