From 169c625f3b7aafd94ceba9fd9fe5f3f55e2021a8 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Tue, 13 Jun 2023 11:18:30 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=A4=84=E7=90=86=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E6=B5=81=E4=B8=8Bzip=E7=AD=89=E4=BE=9D=E8=B5=96=E4=BA=8EtoIdxM?= =?UTF-8?q?ap=E5=87=BD=E6=95=B0=E6=97=B6=E6=B2=A1=E6=9C=89=E4=BF=9D?= =?UTF-8?q?=E8=AF=81=E9=A1=BA=E5=BA=8F=E9=97=AE=E9=A2=98=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E9=A1=BA=E5=BA=8F=E9=94=99=E4=B9=B1?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/stream/TerminableWrappedStream.java | 19 +++++----- .../stream/TransformableWrappedStream.java | 37 ++++++++++--------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TerminableWrappedStream.java index 1fc622393..c31d4ca00 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TerminableWrappedStream.java @@ -12,10 +12,10 @@ package org.dromara.hutool.core.stream; +import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.lang.Opt; import org.dromara.hutool.core.lang.mutable.MutableInt; import org.dromara.hutool.core.lang.mutable.MutableObj; -import org.dromara.hutool.core.array.ArrayUtil; import java.util.*; import java.util.function.*; @@ -214,7 +214,7 @@ public interface TerminableWrappedStream Map toIdxMap(final Function valueMapper) { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); - return EasyStream.of(toList()).toMap(e -> index.incrementAndGet(), valueMapper, (l, r) -> r); + return EasyStream.of(parallel().toList()).toMap(e -> index.incrementAndGet(), valueMapper, (l, r) -> r); } // region ============ to zip ============ @@ -505,9 +505,10 @@ public interface TerminableWrappedStream action) { Objects.requireNonNull(action); - if (isParallel()) { - EasyStream.of(toIdxMap().entrySet()).parallel(isParallel()) - .forEach(e -> action.accept(e.getValue(), e.getKey())); + final boolean isParallel = isParallel(); + if (isParallel) { + EasyStream.of(toIdxMap().entrySet()).parallel() + .forEach(e -> action.accept(e.getValue(), e.getKey())); } else { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); unwrap().forEach(e -> action.accept(e, index.incrementAndGet())); @@ -522,10 +523,10 @@ public interface TerminableWrappedStream action) { Objects.requireNonNull(action); - if (isParallel()) { - EasyStream.of(toIdxMap().entrySet()) - .parallel(isParallel()) - .forEachOrdered(e -> action.accept(e.getValue(), e.getKey())); + final boolean isParallel = isParallel(); + if (isParallel) { + EasyStream.of(toIdxMap().entrySet()).parallel() + .forEachOrdered(e -> action.accept(e.getValue(), e.getKey())); } else { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); unwrap().forEachOrdered(e -> action.accept(e, index.incrementAndGet())); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java index efd4b3028..308611eb1 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/stream/TransformableWrappedStream.java @@ -12,6 +12,7 @@ package org.dromara.hutool.core.stream; +import org.dromara.hutool.core.array.ArrayUtil; import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.iter.IterUtil; import org.dromara.hutool.core.lang.Console; @@ -19,7 +20,6 @@ import org.dromara.hutool.core.lang.mutable.MutableInt; import org.dromara.hutool.core.lang.mutable.MutableObj; import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.map.SafeConcurrentHashMap; -import org.dromara.hutool.core.array.ArrayUtil; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; @@ -279,12 +279,13 @@ public interface TransformableWrappedStream action) { Objects.requireNonNull(action); - if (isParallel()) { + final boolean isParallel = isParallel(); + if (isParallel) { final Map idxMap = easyStream().toIdxMap(); return wrap(EasyStream.of(idxMap.entrySet()) - .parallel(isParallel()) - .peek(e -> action.accept(e.getValue(), e.getKey())) - .map(Map.Entry::getValue)); + .parallel() + .peek(e -> action.accept(e.getValue(), e.getKey())) + .map(Map.Entry::getValue)); } else { final AtomicInteger index = new AtomicInteger(NOT_FOUND_ELEMENT_INDEX); return peek(e -> action.accept(e, index.incrementAndGet())); @@ -383,12 +384,12 @@ public interface TransformableWrappedStream predicate) { Objects.requireNonNull(predicate); - if (isParallel()) { + final boolean isParallel = isParallel(); + if (isParallel) { final Map idxMap = easyStream().toIdxMap(); - return wrap(EasyStream.of(idxMap.entrySet()) - .parallel(isParallel()) - .filter(e -> predicate.test(e.getValue(), e.getKey())) - .map(Map.Entry::getValue)); + return wrap(EasyStream.of(idxMap.entrySet()).parallel() + .filter(e -> predicate.test(e.getValue(), e.getKey())) + .map(Map.Entry::getValue)); } else { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); return filter(e -> predicate.test(e, index.incrementAndGet())); @@ -440,11 +441,11 @@ public interface TransformableWrappedStream EasyStream flatMapIdx(final BiFunction> mapper) { Objects.requireNonNull(mapper); - if (isParallel()) { + final boolean isParallel = isParallel(); + if (isParallel) { final Map idxMap = easyStream().toIdxMap(); - return EasyStream.of(idxMap.entrySet()) - .parallel(isParallel()) - .flatMap(e -> mapper.apply(e.getValue(), e.getKey())); + return EasyStream.of(idxMap.entrySet()).parallel() + .flatMap(e -> mapper.apply(e.getValue(), e.getKey())); } else { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); return flatMap(e -> mapper.apply(e, index.incrementAndGet())); @@ -553,11 +554,11 @@ public interface TransformableWrappedStream EasyStream mapIdx(final BiFunction mapper) { Objects.requireNonNull(mapper); - if (isParallel()) { + final boolean isParallel = isParallel(); + if (isParallel) { final Map idxMap = easyStream().toIdxMap(); - return EasyStream.of(idxMap.entrySet()) - .parallel(isParallel()) - .map(e -> mapper.apply(e.getValue(), e.getKey())); + return EasyStream.of(idxMap.entrySet()).parallel() + .map(e -> mapper.apply(e.getValue(), e.getKey())); } else { final MutableInt index = new MutableInt(NOT_FOUND_ELEMENT_INDEX); return map(e -> mapper.apply(e, index.incrementAndGet()));