依赖jar
这里依赖了hutool的时间工具类:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.4</version>
</dependency>
代码实现
首先要对数据进行排序
//排序
JSONArray array = JSONArray.parseArray("[{\"startTime\":\"09:00\",\"endTime\":\"10:00\"},{\"startTime\":\"17:00\",\"endTime\":\"17:00\"}]");
array.sort((o1, o2) -> {
DateTime startTime1 = DateUtil.parseTimeToday((String) JSON.parseObject(JSON.toJSONString(o1)).get("startTime"));
DateTime startTime2 = DateUtil.parseTimeToday((String) JSON.parseObject(JSON.toJSONString(o2)).get("startTime"));
int compare = DateUtil.compare(startTime1, startTime2);
if (compare>0) {
return 1;
} else if (compare<0) {
return -1;
}
return 0;
});
对排序结果进行筛选:
//判断是否有重叠
for (int i = 0; i < array.size(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
DateTime startTime = DateUtil.parseTimeToday((String) jsonObject.get("startTime"));
DateTime endTime = DateUtil.parseTimeToday((String) jsonObject.get("endTime"));
if (!(DateUtil.compare(startTime, endTime)<0)){
throw new RuntimeException("时间段的开始时间需要小于结束时间");
}
for (int j = i+1; j < array.size(); j++) {
JSONObject jsonObjectSub = array.getJSONObject(j);
DateTime startTimeSub = DateUtil.parseTimeToday((String) jsonObjectSub.get("startTime"));
DateTime endTimeSub = DateUtil.parseTimeToday((String) jsonObjectSub.get("endTime"));
if (!(DateUtil.compare(startTimeSub, endTimeSub)<0)){
throw new RuntimeException("时间段的开始时间需要小于结束时间");
}
if (DateUtil.compare(startTime, endTimeSub)<0&&DateUtil.compare(startTimeSub, endTime)<0){
throw new RuntimeException("时间段有重叠");
}
}
}
System.out.println(array);