1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

remove expensive set from activities

This commit is contained in:
oblonski 2015-09-26 15:06:40 +02:00
parent e5bc5f87cb
commit e25b61cac4

View file

@ -66,36 +66,20 @@ public class TourActivities {
} }
} }
public static TourActivities emptyTour() {
return new TourActivities();
}
private final ArrayList<TourActivity> tourActivities = new ArrayList<TourActivity>(); private final ArrayList<TourActivity> tourActivities = new ArrayList<TourActivity>();
private final Set<Job> jobs = new HashSet<Job>(); private final Set<Job> jobs = new HashSet<Job>();
private final Set<TourActivity> activities = new HashSet<TourActivity>();
private ReverseActivityIterator backward; private ReverseActivityIterator backward;
private TourActivities(TourActivities tour2copy) { private TourActivities(TourActivities tour2copy) {
for (TourActivity tourAct : tour2copy.getActivities()) { for (TourActivity tourAct : tour2copy.getActivities()) {
TourActivity newAct = tourAct.duplicate(); TourActivity newAct = tourAct.duplicate();
this.tourActivities.add(newAct); this.tourActivities.add(newAct);
addToActivitySet(newAct);
addJob(newAct); addJob(newAct);
} }
} }
private void addToActivitySet(TourActivity newAct) {
activities.add(newAct);
}
private void removeFromActivitySet(TourActivity act) {
activities.remove(act);
}
public TourActivities() { public TourActivities() {
} }
@ -148,7 +132,6 @@ public class TourActivities {
if (c instanceof JobActivity) { if (c instanceof JobActivity) {
if (job.equals(((JobActivity) c).getJob())) { if (job.equals(((JobActivity) c).getJob())) {
tourActivities.remove(c); tourActivities.remove(c);
removeFromActivitySet(c);
activityRemoved = true; activityRemoved = true;
} }
} }
@ -163,8 +146,9 @@ public class TourActivities {
* @param activity to be looked up * @param activity to be looked up
* @return true if this contains specified activity, false otherwise * @return true if this contains specified activity, false otherwise
*/ */
@Deprecated
public boolean hasActivity(TourActivity activity) { public boolean hasActivity(TourActivity activity) {
return activities.contains(activity); return tourActivities.contains(activity);
} }
/** /**
@ -185,7 +169,6 @@ public class TourActivities {
for (TourActivity act : acts) { for (TourActivity act : acts) {
if (act == activity) { if (act == activity) {
tourActivities.remove(act); tourActivities.remove(act);
removeFromActivitySet(act);
actRemoved = true; actRemoved = true;
} else { } else {
if (act instanceof JobActivity && job != null) { if (act instanceof JobActivity && job != null) {
@ -228,7 +211,6 @@ public class TourActivities {
} else if (insertionIndex >= tourActivities.size()) { } else if (insertionIndex >= tourActivities.size()) {
tourActivities.add(act); tourActivities.add(act);
} }
addToActivitySet(act);
addJob(act); addJob(act);
} }
@ -243,7 +225,6 @@ public class TourActivities {
if (tourActivities.contains(act)) if (tourActivities.contains(act))
throw new IllegalStateException("act " + act + " already in tour. cannot add act twice."); throw new IllegalStateException("act " + act + " already in tour. cannot add act twice.");
tourActivities.add(act); tourActivities.add(act);
addToActivitySet(act);
addJob(act); addJob(act);
} }