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()));