現在、2つのフィードを取り込み、いずれかのフィードに欠落している、またはその中に部分的に存在するトリップをプリントアウトするJavaプログラムを作成中です。たとえば、フィード1にはトリップABがあり、トリップ2にはABCDが停止しています。したがって、T2はT1のサブセットです。GTFS - 2つのフィードでのトリップの検索を改善する
基本的には、各フィードに1つのMap<Type, List<Trip>>
があります。タイプはルートタイプ(バス、トラムなど)で、List<Trip>
にはそのタイプのすべてのトリップが含まれています。
すべてTrip
オブジェクトは、指定されたフィールドがhereです。また、List<StopTime>
とService
への参照は、ソートされた順序でストップを指定し、旅行が実行されているサービス時間を指定します。
このチェックは意図どおりに機能し、私が期待した結果が得られます。しかし、もし私が間違っていなければ、私は基本的にO(n^2)の最悪の場合には他のリストとの各トリップをチェックするので、大きなフィード(40.000以上の旅行)での実行時間はかなり長いです。
私が見なければならない旅行を最小限に抑える方法を探しています。 私ができることの1つは、旅行の日付範囲が重複している場合、小切手を移動することです。これは現在Trip
オブジェクト内のList<StopTime>
をチェックするときに行われます。
あなたの例は本当に再現可能ではありませんが、Java 8のParallelStreamとConcurrentHashMapを試してみてください。 * http://stackoverflow.com/help/mcve * http://radar.oreilly.com/2015/02/java-8-streams-api-and-parallelism.html –