java中两个listString 里面都存了每个string存开始时间-结束时间时间为hhmm的时间格式比较两个list中的时间区间是否重叠
可以通过比较两个时间区间的开始时间和结束时间,判断是否重叠。
假设有两个List
首先,我们需要将字符串转换为时间类型。可以使用SimpleDateFormat类来实现。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list1 = List.of("09:00-10:00", "12:00-13:00");
List<String> list2 = List.of("08:30-09:30", "11:00-12:30");
boolean overlap = checkOverlap(list1, list2);
System.out.println("Overlap: " + overlap);
}
public static boolean checkOverlap(List<String> list1, List<String> list2) {
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
for (String interval1 : list1) {
String[] times1 = interval1.split("-");
Date startTime1;
Date endTime1;
try {
startTime1 = dateFormat.parse(times1[0]);
endTime1 = dateFormat.parse(times1[1]);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
for (String interval2 : list2) {
String[] times2 = interval2.split("-");
Date startTime2;
Date endTime2;
try {
startTime2 = dateFormat.parse(times2[0]);
endTime2 = dateFormat.parse(times2[1]);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
if (startTime1.before(endTime2) && endTime1.after(startTime2)) {
return true; // 重叠
}
}
}
return false; // 不重叠
}
}
在上述代码中,我们首先定义了两个时间区间的List
在checkOverlap方法中,我们首先创建了一个SimpleDateFormat对象,用于将字符串转换为时间类型。
然后,我们使用嵌套的循环来遍历两个时间区间的所有组合。对于每个时间区间,我们首先将其拆分为开始时间和结束时间,并将其转换为Date类型。
然后,我们将两个时间区间的开始时间和结束时间进行比较,如果存在重叠部分,则返回true;否则,继续比较下一个时间区间。
最后,如果没有找到重叠的时间区间,则返回false。
运行上述代码,将输出"Overlap: true",表示两个时间区间存在重叠
原文地址: https://www.cveoy.top/t/topic/hC6H 著作权归作者所有。请勿转载和采集!