From 058d7bbb714634e42bff1dd71fdfca3a378421d3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 20:50:50 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/station/StationSegmentPlanner.java | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/station/StationSegmentPlanner.java b/src/main/java/com/zy/core/thread/impl/station/StationSegmentPlanner.java
index 3c9328c..6d5fba6 100644
--- a/src/main/java/com/zy/core/thread/impl/station/StationSegmentPlanner.java
+++ b/src/main/java/com/zy/core/thread/impl/station/StationSegmentPlanner.java
@@ -34,8 +34,12 @@
int total = path.size();
List<Integer> segmentEndIndices = new ArrayList<>();
if (liftTransferPath != null) {
+ int searchStartIdx = 0;
for (Integer liftTransferStationId : liftTransferPath) {
- int endIndex = path.indexOf(liftTransferStationId);
+ int endIndex = findNextStationIndex(path, liftTransferStationId, searchStartIdx);
+ if (endIndex >= 0) {
+ searchStartIdx = endIndex + 1;
+ }
if (endIndex <= 0) {
continue;
}
@@ -87,6 +91,19 @@
return plan;
}
+ private int findNextStationIndex(List<Integer> path, Integer stationId, int fromIndex) {
+ if (path == null || path.isEmpty() || stationId == null) {
+ return -1;
+ }
+ int startIdx = Math.max(fromIndex, 0);
+ for (int i = startIdx; i < path.size(); i++) {
+ if (stationId.equals(path.get(i))) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
private List<Integer> copyIntegerList(List<Integer> source) {
if (source == null) {
return new ArrayList<>();
--
Gitblit v1.9.1