diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
index 28f446daa..e21f3aa92 100755
--- a/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/ListUtil.java
@@ -13,6 +13,7 @@ import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.PageUtil;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
@@ -692,4 +693,51 @@ public class ListUtil {
}
return list;
}
+
+ /**
+ * 类似js的splice函数
+ *
+ * @param start 起始下标, 可以为负数, -1代表最后一个元素
+ * @param deleteCount 删除个数,必须是正整数
+ * @param items 放入值
+ * @return 操作后的流
+ * @since 6.0.0
+ */
+ @SafeVarargs
+ public static
+ * 例如以下代码编译正常,但运行时会抛出 {@link ArrayStoreException}
+ *
+ * 这是一个无状态中间操作
+ * {@code
+ * // 等价于先调用map再调用nonNull
+ * .map(...).nonNull()...
+ * }
+ *
+ * @param mapper 指定的函数
+ * @param
+ * 这是一个无状态中间操作
* 例如,将users里所有user的id和parentId组合在一起,形成一个新的流:
* {@code
* FastStream
+ * 这是一个无状态中间操作
* 例如,将users里所有user的id和parentId组合在一起,形成一个新的流:
* {@code
- * FastStream
*
* @param mapper 操作,返回可迭代对象
* @param
+ * 这是一个无状态中间操作
+ *
+ * @param mapper 操作,返回流
+ * @param {@code String[] strings = Stream.
+ *
{@code String[] strings = Stream.*/ @Override public A[] toArray(IntFunction generator) { @@ -916,8 +906,8 @@ public class FastStreambuilder().add(1).build().toArray(String[]::new); }
标记一个流是不在意元素顺序的, 在并行流的某些情况下可以提高性能
* * @return 无序流 */ @@ -1134,11 +1116,11 @@ public class FastStream与 jdk9 中的 takeWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
+ *本环节中是顺序执行的, 但是后续操作可以支持并行流: {@code + * FastStream.iterate(1, i -> i + 1) + * .parallel() + * // 顺序执行 + * .takeWhile(e -> e < 50) + * // 并发 + * .map(e -> e + 1) + * // 并发 + * .map(String::valueOf) + * .toList(); + * }+ *
但是不建议在并行流中使用, 除非你确定 takeWhile 之后的操作能在并行流中受益很多
+ * + * @param predicate 断言 + * @return 与指定断言匹配的元素组成的流 + */ + public FastStream与 jdk9 中的 dropWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
+ *本环节中是顺序执行的, 但是后续操作可以支持并行流: {@code + * FastStream.iterate(1, i <= 100, i -> i + 1) + * .parallel() + * // 顺序执行 + * .dropWhile(e -> e < 50) + * // 并发 + * .map(e -> e + 1) + * // 并发 + * .map(String::valueOf) + * .toList(); + * }+ *
但是不建议在并行流中使用, 除非你确定 dropWhile 之后的操作能在并行流中受益很多
+ * + * @param predicate 断言 + * @return 剩余元素组成的流 + */ + public FastStream与 jdk9 中的 takeWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
+ *本环节中是顺序执行的, 但是后续操作可以支持并行流
+ *但是不建议在并行流中使用, 除非你确定 takeWhile 之后的操作能在并行流中受益很多
+ * + * @param source 源流 + * @param与 jdk9 中的 dropWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
+ *本环节中是顺序执行的, 但是后续操作可以支持并行流
+ *但是不建议在并行流中使用, 除非你确定 dropWhile 之后的操作能在并行流中受益很多
+ * + * @param source 源流 + * @param这是一个 顺序的、有状态的流
+ *在新流的第一个节点是顺序执行的, 但是后续操作可以支持并行流
+ * + * @param source 源流 + * @param newSpliterator 新流的Spliterator + * @param借鉴自StreamEx
+ * + * @author emptypoint + * @since 6.0.0 + */ +public class DropWhileSpliterator借鉴自StreamEx
+ * + * @author emptypoint + * @since 6.0.0 + */ +public class TakeWhileSpliterator