20 package org.matsim.pt.router;
22 import java.util.Arrays;
24 import java.util.concurrent.ConcurrentHashMap;
45 final static double MIDNIGHT = 24.0*3600;
54 private final Map<TransitRoute, double[]>
sortedDepartureCache =
new ConcurrentHashMap<TransitRoute, double[]>();
76 if (earliestDepartureTimeAtTerminus >= MIDNIGHT) {
77 earliestDepartureTimeAtTerminus = earliestDepartureTimeAtTerminus % MIDNIGHT;
79 if (earliestDepartureTimeAtTerminus < 0) {
81 earliestDepartureTimeAtTerminus += MIDNIGHT;
85 double[] cache = sortedDepartureCache.get(route);
90 cache[i++] = dep.getDepartureTime();
93 sortedDepartureCache.put(route, cache);
95 int pos = Arrays.binarySearch(cache, earliestDepartureTimeAtTerminus);
102 if (pos >= cache.length) {
105 double bestDepartureTime = cache[pos];
111 while (bestDepartureTime < depTime) {
112 bestDepartureTime += MIDNIGHT;
115 return bestDepartureTime;
final Map< TransitRoute, double[]> sortedDepartureCache
double getNextDepartureTime(final TransitRoute route, final TransitRouteStop stop, final double depTime)
Map< Id< Departure >, Departure > getDepartures()
PreparedTransitSchedule(TransitSchedule schedule)
abstract OptionalTime getDepartureOffset()
PreparedTransitSchedule()