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