diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/FastStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/FastStream.java index 72d06776f..7bfd730d8 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/FastStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/FastStream.java @@ -8,6 +8,7 @@ import cn.hutool.core.lang.mutable.MutableInt; import cn.hutool.core.lang.mutable.MutableObj; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.StrUtil; +import cn.hutool.core.util.ArrayUtil; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -60,10 +61,7 @@ public class FastStream implements Stream, Iterable { this.stream = stream; } - @SafeVarargs - private static Stream ofStream(E... values) { - return Objects.isNull(values) ? Stream.empty() : Arrays.stream(values); - } + // --------------------------------------------------------------- Static method start /** * 返回{@code FastStream}的建造器 @@ -99,7 +97,7 @@ public class FastStream implements Stream, Iterable { } /** - * 返回包含单个元素的串行流, 如果值为null, 则返回空的流, 不抛出异常 + * 返回包含单个元素的串行流 * * @param t 单个元素 * @param 元素类型 @@ -120,7 +118,7 @@ public class FastStream implements Stream, Iterable { @SafeVarargs @SuppressWarnings("varargs") public static FastStream of(T... values) { - return new FastStream<>(ofStream(values)); + return ArrayUtil.isEmpty(values) ? FastStream.empty() : new FastStream<>(Stream.of(values)); } /** @@ -280,6 +278,8 @@ public class FastStream implements Stream, Iterable { return Opt.ofBlankAble(str).map(CharSequence::toString).map(s -> s.split(regex)).map(FastStream::of).orElseGet(FastStream::empty); } + // --------------------------------------------------------------- Static method end + /** * 过滤元素,返回与指定断言匹配的元素组成的流 * 这是一个无状态中间操作 @@ -716,10 +716,10 @@ public class FastStream implements Stream, Iterable { * @param 给定的数组类型 * @return 包含此流元素的指定的数组 * @throws ArrayStoreException 如果元素转换失败,例如不是该元素类型及其父类,则抛出该异常 + *

* 例如以下代码编译正常,但运行时会抛出 {@link ArrayStoreException} - *

{@code
-	 *                                                         String[] strings = Stream.builder().add(1).build().toArray(String[]::new);
-	 *                                                         }
+ *
{@code String[] strings = Stream.builder().add(1).build().toArray(String[]::new); }
+ *

*/ @Override public A[] toArray(IntFunction generator) { @@ -1094,7 +1094,7 @@ public class FastStream implements Stream, Iterable { * @return 流 */ public FastStream push(T obj) { - return FastStream.concat(this.stream, Stream.of(obj)); + return FastStream.concat(this.stream, of(obj)); } /** @@ -1105,7 +1105,7 @@ public class FastStream implements Stream, Iterable { */ @SuppressWarnings("unchecked") public FastStream push(T... obj) { - return FastStream.concat(this.stream, ofStream(obj)); + return FastStream.concat(this.stream, of(obj)); } /** @@ -1114,8 +1114,8 @@ public class FastStream implements Stream, Iterable { * @param obj 元素 * @return 流 */ - public FastStream addFirst(T obj) { - return FastStream.concat(Stream.of(obj), this.stream); + public FastStream unshift(T obj) { + return FastStream.concat(of(obj), this.stream); } /** @@ -1125,8 +1125,8 @@ public class FastStream implements Stream, Iterable { * @return 流 */ @SafeVarargs - public final FastStream addFirst(T... obj) { - return FastStream.concat(ofStream(obj), this.stream); + public final FastStream unshift(T... obj) { + return FastStream.concat(of(obj), this.stream); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/stream/FastStreamTest.java b/hutool-core/src/test/java/cn/hutool/core/stream/FastStreamTest.java index 26d985094..9091ec6a0 100644 --- a/hutool-core/src/test/java/cn/hutool/core/stream/FastStreamTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/stream/FastStreamTest.java @@ -100,7 +100,8 @@ public class FastStreamTest { put("1", 1); put("2", 2); put("3", 3); - }}, identityMap); + } + }, identityMap); } @Test @@ -115,7 +116,8 @@ public class FastStreamTest { put("1", singletonList(1)); put("2", singletonList(2)); put("3", singletonList(3)); - }}, group); + } + }, group); } @Test @@ -230,9 +232,9 @@ public class FastStreamTest { } @Test - public void testAddFirst() { + public void testUnshift() { List list = Arrays.asList(2, 3); - List unshift = FastStream.of(list).addFirst(1).toList(); + List unshift = FastStream.of(list).unshift(1).toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), unshift); }