先看效果图:
具体实现:collections.sort 方法中比较器重写实现根据开始时间排序(从小到大),这种方式好处是可以根据某个字段对对象进行排序,这样就可以在java端处理;在通过双循环判断当前的结束日期不能小于下一个开始时间即可
public String validateDate(List<FundIssuingRete> fundRetes){
String result ="";
Collections.sort(fundRetes,new FundIssuingRete.FundIssuingReteComparator());
for(int i= 0;i<fundRetes.size();i++){
String beginDateI = fundRetes.get(i).getBeginDate();
String endDateI = fundRetes.get(i).getEndDate();
for(int j= i+1;j<fundRetes.size();j++){
String beginDateJ = fundRetes.get(j).getBeginDate();
String endDateJ = fundRetes.get(j).getEndDate();
if(endDateI.compareTo(beginDateJ)>0){
result = "时间段["+beginDateI+"~"+endDateI+"]与时间段["+beginDateJ+"~"+endDateJ+"]重复,请检查!";
break;
}
}
}
return result;
}
//比较器的实现
public static class FundIssuingReteComparator implements Comparator {
public int compare(Object o1, Object o2) {
long beginDtae1 =DateUtils.parse(((FundIssuingRete)o1).getBeginDate(), BizConstants.DATE_PATTERN1).getTime();
long beginDtae2 =DateUtils.parse(((FundIssuingRete)o2).getBeginDate(), BizConstants.DATE_PATTERN1).getTime();
if(beginDtae2>beginDtae1){
return -1;
}
else if(beginDtae2==beginDtae1){
return 0;
}
else{
return 1;
}
}
}