不多说直接上代码,就是个中规中矩的方法。感觉不简洁
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("2011-12-13 2011-12-20");
list.add("2011-12-14 2011-12-25");
list.add("2011-12-26 2011-12-30");
list.add("2011-11-14 2012-2-25");
list.add("2011-12-14 2011-12-18");
try {
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < list.size(); i++) {
String d1[] = list.get(i).split(" ");
java.util.Date startdate1 = formater.parse(d1[0]);
java.util.Date enddate1 = formater.parse(d1[1]);
for (int j = i + 1; j < list.size(); j++) {
String d2[] = list.get(j).split(" ");
java.util.Date startdate2 = formater.parse(d2[0]);
java.util.Date enddate2 = formater.parse(d2[1]);
if (!startdate2.before(startdate1)) {
if (!startdate2.after(enddate1)) {
System.out.println(list.get(i) + " 与 " + list.get(j) + " 重合");
}
} else if (!enddate2.before(startdate1)) {
System.out.println(list.get(i) + " 与 " + list.get(j) + " 重合");
}
}
}
} catch (ParseException e) {
e.printStackTrace();
}
}
执行结果:
这是个比较麻烦的方法,还有别的简单方法吗?