}
});
//цикл до предпоследнего элемента - последний объединять не надо (вылетит outofbounds)
for (int i = 0; i < exWorks.size() - 1; i++) {
SheduleIndividualWork current = exWorks.get(i);
if(current == null) {
continue;
}
SheduleIndividualWork next = null;
Integer nextIndex = null;
for (int j = i+1; j < exWorks.size(); j++) {
if (exWorks.get(j) != null) {
next = exWorks.get(j);
nextIndex = j;
break;
}
}
if (next != null) {
Date currentEnd = current.getTimeEnd();
Date nextBegin = next.getTimeBegin();
if (!nextBegin.after(currentEnd)) {
//пересекаются либо идут встык
if (current.getServiceDuration() == next.getServiceDuration()) {
//разбивка совпадает - объединяем
current.setTimeEnd(next.getTimeEnd());
exWorks.set(nextIndex, null); //убили
} else {
//разбивка не совпадает - обрезаем
current.setTimeEnd(nextBegin);
}
}
}
}
//удаляем убитые
for (Iterator<SheduleIndividualWork> it = exWorks.iterator(); it.hasNext();) {
SheduleIndividualWork work = it.next();
if (work == null) {
it.remove();
}
}
}