diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 9bf54d89..22b9db33 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -81,7 +81,6 @@ public class TourActivities { } public TourActivities() { - } public List getActivities() { @@ -89,7 +88,30 @@ public class TourActivities { } public Iterator iterator() { - return tourActivities.iterator(); + final Iterator iterator = tourActivities.iterator(); + return new Iterator() { + private TourActivity lastReturned = null; + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public TourActivity next() { + return lastReturned = iterator.next(); + } + + @Override + public void remove() { + if (lastReturned instanceof JobActivity) { + throw new IllegalStateException("Cannot remove JobActivities via iterator. " + + "Use TourActivities.removeActivity(), or alternatively, consider TourActivities.removeJob()"); + } else { + iterator.remove(); + } + } + }; } public boolean isEmpty() {