From cbc6415090595530d77a729c21f149adefa23fed Mon Sep 17 00:00:00 2001 From: shad0wm00n Date: Wed, 24 Dec 2025 22:48:56 +0800 Subject: [PATCH] =?UTF-8?q?fix=20issue=20IDFN7Y=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20SplitIter=20reset=20=E5=90=8E=E6=97=A0=E6=B3=95=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=BF=AD=E4=BB=A3=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/core/collection/ComputeIter.java | 8 ++++++++ .../cn/hutool/core/text/split/SplitIter.java | 1 + .../hutool/core/text/split/SplitIterTest.java | 20 +++++++++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/ComputeIter.java b/hutool-core/src/main/java/cn/hutool/core/collection/ComputeIter.java index 86de3a064e..e605c64b91 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/ComputeIter.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/ComputeIter.java @@ -70,4 +70,12 @@ public abstract class ComputeIter implements Iterator { this.finished = true; this.next = null; } + + /** + * 重置状态,用于再次遍历 + */ + public void resetState() { + this.finished = false; + this.next = null; + } } diff --git a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java index f24760af43..330b988aed 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/split/SplitIter.java @@ -105,6 +105,7 @@ public class SplitIter extends ComputeIter implements Serializable { this.finder.reset(); this.offset = 0; this.count = 0; + resetState(); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/text/split/SplitIterTest.java b/hutool-core/src/test/java/cn/hutool/core/text/split/SplitIterTest.java index c82fae99f0..64c30b0898 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/split/SplitIterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/split/SplitIterTest.java @@ -1,9 +1,6 @@ package cn.hutool.core.text.split; -import cn.hutool.core.text.finder.CharFinder; -import cn.hutool.core.text.finder.LengthFinder; -import cn.hutool.core.text.finder.PatternFinder; -import cn.hutool.core.text.finder.StrFinder; +import cn.hutool.core.text.finder.*; import org.junit.jupiter.api.Test; import java.util.Arrays; @@ -169,4 +166,19 @@ public class SplitIterTest { assertEquals(Collections.singletonList("test"), result); } + + @Test + public void issueIDFN7YTest() { + final String text = "a,b,c"; + final TextFinder finder = new StrFinder(",", false); + final SplitIter splitIter = new SplitIter(text, finder, 0, false); + + List firstResult = splitIter.toList(false); + assertEquals(3, firstResult.size()); + + splitIter.reset(); + List secondResult = splitIter.toList(false); + assertEquals(3, secondResult.size()); + assertEquals(firstResult, secondResult); + } }