From 717305e0396b507be7ae372431ab0366b152b3d0 Mon Sep 17 00:00:00 2001 From: huangchengxing <841396397@qq.com> Date: Tue, 6 Sep 2022 12:21:41 +0800 Subject: [PATCH] fix code --- .../stream/AbstractEnhancedWrappedStream.java | 4 +- .../cn/hutool/core/stream/EasyStream.java | 37 ++++--- .../cn/hutool/core/stream/EntryStream.java | 103 ++++++++++-------- .../core/stream/TerminableWrappedStream.java | 50 ++++----- .../stream/TransformableWrappedStream.java | 19 ++-- .../cn/hutool/core/stream/WrappedStream.java | 50 ++++----- .../cn/hutool/core/stream/EasyStreamTest.java | 2 +- 7 files changed, 139 insertions(+), 126 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/AbstractEnhancedWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/AbstractEnhancedWrappedStream.java index 5fc66d653..aed748389 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/AbstractEnhancedWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/AbstractEnhancedWrappedStream.java @@ -35,7 +35,7 @@ public abstract class AbstractEnhancedWrappedStream stream) { + protected AbstractEnhancedWrappedStream(final Stream stream) { this.stream = Objects.requireNonNull(stream, "stream must not null"); } @@ -56,7 +56,7 @@ public abstract class AbstractEnhancedWrappedStream extends AbstractEnhancedWrappedStream wrapping(Stream stream) { + public EasyStream wrapping(final Stream stream) { return new EasyStream<>(stream); } @@ -281,10 +281,11 @@ public class EasyStream extends AbstractEnhancedWrappedStream */ - public > List toTree(Function idGetter, - Function pIdGetter, - BiConsumer> childrenSetter) { - Map> pIdValuesMap = group(pIdGetter); + public > List toTree( + final Function idGetter, + final Function pIdGetter, + final BiConsumer> childrenSetter) { + final Map> pIdValuesMap = group(pIdGetter); return getChildrenFromMapByPidAndSet(idGetter, childrenSetter, pIdValuesMap, pIdValuesMap.get(null)); } @@ -305,13 +306,14 @@ public class EasyStream extends AbstractEnhancedWrappedStream */ - public > List toTree(Function idGetter, - Function pIdGetter, - BiConsumer> childrenSetter, - Predicate parentPredicate) { + public > List toTree( + final Function idGetter, + final Function pIdGetter, + final BiConsumer> childrenSetter, + final Predicate parentPredicate) { Objects.requireNonNull(parentPredicate); - List list = toList(); - List parents = EasyStream.of(list).filter(e -> + final List list = toList(); + final List parents = EasyStream.of(list).filter(e -> // 此处是为了适配 parentPredicate.test空指针 情况 // 因为Predicate.test的返回值是boolean,所以如果 e -> null 这种返回null的情况,会直接抛出NPE Opt.ofTry(() -> parentPredicate.test(e)).filter(Boolean::booleanValue).isPresent()) @@ -330,15 +332,16 @@ public class EasyStream extends AbstractEnhancedWrappedStream 此处是id的泛型限制 * @return list 组装好的树 */ - private > List getChildrenFromMapByPidAndSet(Function idGetter, - BiConsumer> childrenSetter, - Map> pIdValuesMap, - List parents) { + private > List getChildrenFromMapByPidAndSet( + final Function idGetter, + final BiConsumer> childrenSetter, + final Map> pIdValuesMap, + final List parents) { Objects.requireNonNull(idGetter); Objects.requireNonNull(childrenSetter); Objects.requireNonNull(pIdValuesMap); - MutableObj>> recursiveRef = new MutableObj<>(); - Consumer> recursive = values -> EasyStream.of(values, isParallel()).forEach(value -> { + final MutableObj>> recursiveRef = new MutableObj<>(); + final Consumer> recursive = values -> EasyStream.of(values, isParallel()).forEach(value -> { List children = pIdValuesMap.get(idGetter.apply(value)); childrenSetter.accept(value, children); recursiveRef.get().accept(children); diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/EntryStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/EntryStream.java index cb030f9df..322379071 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/EntryStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/EntryStream.java @@ -38,7 +38,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream EntryStream merge(Iterable keys, Iterable values) { + public static EntryStream merge(final Iterable keys, final Iterable values) { final boolean hasKeys = ObjUtil.isNotNull(keys); final boolean hasValues = ObjUtil.isNotNull(values); // 皆为空 @@ -75,7 +75,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 值类型 * @return {@link EntryStream}实例 */ - public static EntryStream of(Map map) { + public static EntryStream of(final Map map) { return ObjUtil.isNull(map) ? empty() : of(map.entrySet()); } @@ -90,7 +90,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 值类型 * @return {@link EntryStream}实例 */ - public static EntryStream of(Iterable> entries) { + public static EntryStream of(final Iterable> entries) { return ObjUtil.isNull(entries) ? empty() : of(StreamSupport.stream(entries.spliterator(), false)); } @@ -106,7 +106,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream EntryStream of( - Iterable source, Function keyMapper, Function valueMapper) { + final Iterable source, final Function keyMapper, final Function valueMapper) { Objects.requireNonNull(keyMapper); Objects.requireNonNull(valueMapper); if (ObjUtil.isNull(source)) { @@ -126,7 +126,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 值类型 * @return {@link EntryStream}实例 */ - public static EntryStream of(Stream> stream) { + public static EntryStream of(final Stream> stream) { return ObjUtil.isNull(stream) ? empty() : new EntryStream<>(stream.map(EntryStream::ofEntry)); } @@ -145,7 +145,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream> stream) { + EntryStream(final Stream> stream) { super(stream); } @@ -157,9 +157,10 @@ public class EntryStream extends AbstractEnhancedWrappedStream distinctByKey() { - Set accessed = new ConcurrentHashSet<>(16); + // FIXME fix happen NPE when has null key + final Set accessed = new ConcurrentHashSet<>(16); return wrapping(stream.filter(e -> { - K key = e.getKey(); + final K key = e.getKey(); if (accessed.contains(key)) { return false; } @@ -174,9 +175,10 @@ public class EntryStream extends AbstractEnhancedWrappedStream distinctByValue() { - Set accessed = new ConcurrentHashSet<>(16); + // FIXME fix happen NPE when has null value + final Set accessed = new ConcurrentHashSet<>(16); return wrapping(stream.filter(e -> { - V val = e.getValue(); + final V val = e.getValue(); if (accessed.contains(val)) { return false; } @@ -191,7 +193,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream filter(BiPredicate filter) { + public EntryStream filter(final BiPredicate filter) { Objects.requireNonNull(filter); return super.filter(e -> filter.test(e.getKey(), e.getValue())); } @@ -202,7 +204,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream filterByKey(Predicate filter) { + public EntryStream filterByKey(final Predicate filter) { Objects.requireNonNull(filter); return super.filter(e -> filter.test(e.getKey())); } @@ -213,7 +215,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream filterByValue(Predicate filter) { + public EntryStream filterByValue(final Predicate filter) { Objects.requireNonNull(filter); return super.filter(e -> filter.test(e.getValue())); } @@ -251,7 +253,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream peekKey(Consumer consumer) { + public EntryStream peekKey(final Consumer consumer) { Objects.requireNonNull(consumer); return super.peek(e -> consumer.accept(e.getKey())); } @@ -262,7 +264,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream peekValue(Consumer consumer) { + public EntryStream peekValue(final Consumer consumer) { Objects.requireNonNull(consumer); return super.peek(e -> consumer.accept(e.getValue())); } @@ -273,7 +275,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream sortByKey(Comparator comparator) { + public EntryStream sortByKey(final Comparator comparator) { Objects.requireNonNull(comparator); return sorted(Map.Entry.comparingByKey(comparator)); } @@ -284,7 +286,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream sortByValue(Comparator comparator) { + public EntryStream sortByValue(final Comparator comparator) { Objects.requireNonNull(comparator); return sorted(Map.Entry.comparingByValue(comparator)); } @@ -298,7 +300,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream push(K key, V value) { + public EntryStream push(final K key, final V value) { return wrapping(Stream.concat(stream, Stream.of(ofEntry(key, value)))); } @@ -309,7 +311,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream unshift(K key, V value) { + public EntryStream unshift(final K key, final V value) { return wrapping(Stream.concat(Stream.of(ofEntry(key, value)), stream)); } @@ -320,7 +322,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream append(Iterable> entries) { + public EntryStream append(final Iterable> entries) { if (IterUtil.isEmpty(entries)) { return this; } @@ -336,7 +338,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream prepend(Iterable> entries) { + public EntryStream prepend(final Iterable> entries) { if (IterUtil.isEmpty(entries)) { return this; } @@ -370,7 +372,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 新的键类型 * @return {@link EntryStream}实例 */ - public EntryStream mapKeys(Function mapper) { + public EntryStream mapKeys(final Function mapper) { Objects.requireNonNull(mapper); return new EntryStream<>( stream.map(e -> ofEntry(mapper.apply(e.getKey()), e.getValue())) @@ -384,7 +386,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 新的值类型 * @return {@link EntryStream}实例 */ - public EntryStream mapValues(Function mapper) { + public EntryStream mapValues(final Function mapper) { Objects.requireNonNull(mapper); return new EntryStream<>( stream.map(e -> ofEntry(e.getKey(), mapper.apply(e.getValue()))) @@ -400,7 +402,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream EasyStream map(Function, ? extends R> mapper) { + public EasyStream map(final Function, ? extends R> mapper) { Objects.requireNonNull(mapper); return EasyStream.of(stream.map(mapper)); } @@ -412,7 +414,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 函数执行后返回流中元素的类型 * @return 映射后的单对象组成的流 */ - public EasyStream map(BiFunction mapper) { + public EasyStream map(final BiFunction mapper) { Objects.requireNonNull(mapper); return EasyStream.of(stream.map(e -> mapper.apply(e.getKey(), e.getValue()))); } @@ -430,7 +432,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream EasyStream flatMap(Function, ? extends Stream> mapper) { + public EasyStream flatMap(final Function, ? extends Stream> mapper) { Objects.requireNonNull(mapper); return EasyStream.of(stream.flatMap(mapper)); } @@ -449,7 +451,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 新的键类型 * @return 返回叠加拆分操作后的流 */ - public EntryStream flatMapKey(Function> keyMapper) { + public EntryStream flatMapKey(final Function> keyMapper) { Objects.requireNonNull(keyMapper); return new EntryStream<>( stream.flatMap(e -> keyMapper @@ -473,7 +475,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 新的值类型 * @return 返回叠加拆分操作后的流 */ - public EntryStream flatMapValue(Function> valueMapper) { + public EntryStream flatMapValue(final Function> valueMapper) { Objects.requireNonNull(valueMapper); return new EntryStream<>( stream.flatMap(e -> valueMapper @@ -493,7 +495,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream toMap(Supplier> mapFactory, BinaryOperator operator) { + public Map toMap(final Supplier> mapFactory, final BinaryOperator operator) { Objects.requireNonNull(mapFactory); Objects.requireNonNull(operator); return super.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, operator, mapFactory)); @@ -506,7 +508,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream toMap(Supplier> mapFactory) { + public Map toMap(final Supplier> mapFactory) { Objects.requireNonNull(mapFactory); return super.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (t1, t2) -> t2, mapFactory)); } @@ -533,7 +535,9 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTable( - BiFunction rowKeyMapper, Supplier> colMapFactory, BinaryOperator operator) { + final BiFunction rowKeyMapper, + final Supplier> colMapFactory, + final BinaryOperator operator) { Objects.requireNonNull(rowKeyMapper); Objects.requireNonNull(colMapFactory); Objects.requireNonNull(operator); @@ -553,7 +557,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTable(BiFunction rowKeyMapper) { + public Table toTable(final BiFunction rowKeyMapper) { return toTable(rowKeyMapper, HashMap::new, throwingMerger()); } @@ -567,7 +571,9 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTableByKey( - Function rowKeyMapper, Supplier> colMapFactory, BinaryOperator operator) { + final Function rowKeyMapper, + final Supplier> colMapFactory, + final BinaryOperator operator) { return toTable((k, v) -> rowKeyMapper.apply(k), colMapFactory, operator); } @@ -579,7 +585,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTableByKey(Function rowKeyMapper) { + public Table toTableByKey(final Function rowKeyMapper) { return toTable((k, v) -> rowKeyMapper.apply(k)); } @@ -593,7 +599,9 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTableByValue( - Function rowKeyMapper, Supplier> colMapFactory, BinaryOperator operator) { + final Function rowKeyMapper, + final Supplier> colMapFactory, + final BinaryOperator operator) { return toTable((k, v) -> rowKeyMapper.apply(v), colMapFactory, operator); } @@ -605,7 +613,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream Table toTableByValue(Function rowKeyMapper) { + public Table toTableByValue(final Function rowKeyMapper) { return toTable((k, v) -> rowKeyMapper.apply(v)); } @@ -625,7 +633,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 值集合的类型 * @return 集合 */ - public > Map groupByKey(Collector collector) { + public > Map groupByKey(final Collector collector) { return groupByKey((Supplier>)HashMap::new, collector); } @@ -638,7 +646,8 @@ public class EntryStream extends AbstractEnhancedWrappedStream 返回的map集合类型 * @return 集合 */ - public , M extends Map> M groupByKey(Supplier mapFactory, Collector collector) { + public , M extends Map> M groupByKey( + final Supplier mapFactory, final Collector collector) { return super.collect(Collectors.groupingBy( Map.Entry::getKey, mapFactory, CollectorUtil.transform(ArrayList::new, s -> s.stream().map(Map.Entry::getValue).collect(collector)) @@ -650,7 +659,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream consumer) { + public void forEach(final BiConsumer consumer) { Objects.requireNonNull(consumer); super.forEach(e -> consumer.accept(e.getKey(), e.getValue())); } @@ -673,7 +682,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 返回值类型 * @return 收集容器 */ - public R collectKeys(Collector collector) { + public R collectKeys(final Collector collector) { return toKeyStream().collect(collector); } @@ -684,7 +693,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream 返回值类型 * @return 收集容器 */ - public R collectValues(Collector collector) { + public R collectValues(final Collector collector) { return toValueStream().collect(collector); } @@ -694,7 +703,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream predicate) { + public boolean anyMatch(final BiPredicate predicate) { return super.anyMatch(e -> predicate.test(e.getKey(), e.getValue())); } @@ -704,7 +713,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream predicate) { + public boolean allMatch(final BiPredicate predicate) { Objects.requireNonNull(predicate); return super.allMatch(e -> predicate.test(e.getKey(), e.getValue())); } @@ -715,7 +724,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream predicate) { + public boolean noneMatch(final BiPredicate predicate) { Objects.requireNonNull(predicate); return super.noneMatch(e -> predicate.test(e.getKey(), e.getValue())); } @@ -726,7 +735,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream Map.Entry ofEntry(Map.Entry entry) { + static Map.Entry ofEntry(final Map.Entry entry) { return ObjUtil.defaultIfNull( entry, e -> ofEntry(e.getKey(), e.getValue()), (Map.Entry)EMPTY_ENTRY ); @@ -735,7 +744,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream Map.Entry ofEntry(K key, V value) { + static Map.Entry ofEntry(final K key, final V value) { return new AbstractMap.SimpleImmutableEntry<>(key, value); } @@ -746,7 +755,7 @@ public class EntryStream extends AbstractEnhancedWrappedStream wrapping(Stream> stream) { + public EntryStream wrapping(final Stream> stream) { return new EntryStream<>(stream); } diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java index 0e71feb09..96923cd94 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TerminableWrappedStream.java @@ -71,7 +71,7 @@ public interface TerminableWrappedStream 集合类型 * @return 集合 */ - default > C toColl(Supplier collectionFactory) { + default > C toColl(final Supplier collectionFactory) { Objects.requireNonNull(collectionFactory); return stream().collect(Collectors.toCollection(collectionFactory)); } @@ -88,7 +88,7 @@ public interface TerminableWrappedStream Map toMap(Function keyMapper) { + default Map toMap(final Function keyMapper) { return this.toMap(keyMapper, Function.identity()); } @@ -103,7 +103,7 @@ public interface TerminableWrappedStream Map toMap( - Function keyMapper, Function valueMapper) { + final Function keyMapper, final Function valueMapper) { return this.toMap(keyMapper, valueMapper, (l, r) -> r); } @@ -118,7 +118,7 @@ public interface TerminableWrappedStream Map toUnmodifiableMap( - Function keyMapper, Function valueMapper) { + final Function keyMapper, final Function valueMapper) { return Collections.unmodifiableMap(this.toMap(keyMapper, valueMapper)); } @@ -134,9 +134,9 @@ public interface TerminableWrappedStream Map toMap( - Function keyMapper, - Function valueMapper, - BinaryOperator mergeFunction) { + final Function keyMapper, + final Function valueMapper, + final BinaryOperator mergeFunction) { return this.toMap(keyMapper, valueMapper, mergeFunction, HashMap::new); } @@ -152,9 +152,9 @@ public interface TerminableWrappedStream Map toUnmodifiableMap( - Function keyMapper, - Function valueMapper, - BinaryOperator mergeFunction) { + final Function keyMapper, + final Function valueMapper, + final BinaryOperator mergeFunction) { return Collections.unmodifiableMap( this.toMap(keyMapper, valueMapper, mergeFunction, HashMap::new) ); @@ -173,9 +173,9 @@ public interface TerminableWrappedStream> M toMap( - Function keyMapper, - Function valueMapper, - BinaryOperator mergeFunction, + final Function keyMapper, + final Function valueMapper, + final BinaryOperator mergeFunction, Supplier mapSupplier) { Objects.requireNonNull(keyMapper); Objects.requireNonNull(valueMapper); @@ -198,12 +198,12 @@ public interface TerminableWrappedStream * 如果key重复, 则保留最后一个关联的value;
*/ - default Map toZip(Iterable other) { + default Map toZip(final Iterable other) { Objects.requireNonNull(other); // value对象迭代器 final Iterator iterator = Opt.ofNullable(other).map(Iterable::iterator).orElseGet(Collections::emptyIterator); if (this.isParallel()) { - List keyList = toList(); + final List keyList = toList(); final Map map = new HashMap<>(keyList.size()); for (T key : keyList) { map.put(key, iterator.hasNext() ? iterator.next() : null); @@ -364,7 +364,7 @@ public interface TerminableWrappedStream Map> group(Function classifier) { + default Map> group(final Function classifier) { return this.group(classifier, Collectors.toList()); } @@ -408,7 +408,7 @@ public interface TerminableWrappedStream Map group( - Function classifier, Collector downstream) { + final Function classifier, final Collector downstream) { return this.group(classifier, HashMap::new, downstream); } @@ -426,9 +426,9 @@ public interface TerminableWrappedStream> M group( - Function classifier, - Supplier mapFactory, - Collector downstream) { + final Function classifier, + final Supplier mapFactory, + final Collector downstream) { Objects.requireNonNull(classifier); Objects.requireNonNull(mapFactory); Objects.requireNonNull(downstream); @@ -442,7 +442,7 @@ public interface TerminableWrappedStream> partitioning(Predicate predicate) { + default Map> partitioning(final Predicate predicate) { return this.partitioning(predicate, ArrayList::new); } @@ -454,7 +454,7 @@ public interface TerminableWrappedStream> Map partitioning(Predicate predicate, Supplier collFactory) { + default > Map partitioning(final Predicate predicate, final Supplier collFactory) { return this.partitioning(predicate, Collectors.toCollection(collFactory)); } @@ -466,7 +466,7 @@ public interface TerminableWrappedStream 返回值类型 * @return map */ - default Map partitioning(Predicate predicate, Collector downstream) { + default Map partitioning(final Predicate predicate, final Collector downstream) { Objects.requireNonNull(predicate); Objects.requireNonNull(downstream); return stream().collect(Collectors.partitioningBy(predicate, downstream)); diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/TransformableWrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/TransformableWrappedStream.java index f21a1dc0e..f26357e42 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/TransformableWrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/TransformableWrappedStream.java @@ -39,7 +39,8 @@ public interface TransformableWrappedStream 合并后的结果对象类型 * @return 合并后的结果对象的流 */ - default EasyStream zip(final Iterable other, + default EasyStream zip( + final Iterable other, final BiFunction zipper) { Objects.requireNonNull(zipper); final Spliterator keys = spliterator(); @@ -104,7 +105,7 @@ public interface TransformableWrappedStream 值类型 * @return {@link EntryStream}实例 */ - default EntryStream toEntries(Function keyMapper, Function valueMapper) { + default EntryStream toEntries(final Function keyMapper, final Function valueMapper) { Objects.requireNonNull(keyMapper); Objects.requireNonNull(valueMapper); return new EntryStream<>(map(t -> EntryStream.ofEntry(keyMapper.apply(t), valueMapper.apply(t)))); @@ -117,7 +118,7 @@ public interface TransformableWrappedStream 键类型 * @return {@link EntryStream}实例 */ - default EntryStream toEntries(Function keyMapper) { + default EntryStream toEntries(final Function keyMapper) { return toEntries(keyMapper, Function.identity()); } @@ -273,7 +274,7 @@ public interface TransformableWrappedStream */ - default S peekIdx(BiConsumer action) { + default S peekIdx(final BiConsumer action) { Objects.requireNonNull(action); if (isParallel()) { return peek(e -> action.accept(e, NOT_FOUND_ELEMENT_INDEX)); @@ -331,7 +332,7 @@ public interface TransformableWrappedStream iterable) { + default S append(final Iterable iterable) { if (IterUtil.isEmpty(iterable)) { return wrapping(this); } @@ -345,7 +346,7 @@ public interface TransformableWrappedStream iterable) { + default S prepend(final Iterable iterable) { if (IterUtil.isEmpty(iterable)) { return wrapping(this); } @@ -484,11 +485,11 @@ public interface TransformableWrappedStream> childrenGetter, BiConsumer> childrenSetter) { + default S flatTree(final Function> childrenGetter, final BiConsumer> childrenSetter) { Objects.requireNonNull(childrenGetter); Objects.requireNonNull(childrenSetter); - MutableObj>> recursiveRef = new MutableObj<>(); - Function> recursive = e -> EasyStream.of(childrenGetter.apply(e)) + final MutableObj>> recursiveRef = new MutableObj<>(); + final Function> recursive = e -> EasyStream.of(childrenGetter.apply(e)) .flat(recursiveRef.get()) .unshift(e); recursiveRef.set(recursive); diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/WrappedStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/WrappedStream.java index 545797323..4a53bf5d4 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/WrappedStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/WrappedStream.java @@ -42,7 +42,7 @@ public interface WrappedStream> extends Stream< * @param source 被包装的流 * @return S */ - S wrapping(Stream source); + S wrapping(final Stream source); /** * 过滤元素,返回与指定断言匹配的元素组成的流 @@ -52,7 +52,7 @@ public interface WrappedStream> extends Stream< * @return 返回叠加过滤操作后的流 */ @Override - default S filter(Predicate predicate) { + default S filter(final Predicate predicate) { Objects.requireNonNull(predicate); return wrapping(stream().filter(predicate)); } @@ -65,7 +65,7 @@ public interface WrappedStream> extends Stream< * @return 叠加操作后元素类型全为int的流 */ @Override - default IntStream mapToInt(ToIntFunction mapper) { + default IntStream mapToInt(final ToIntFunction mapper) { Objects.requireNonNull(mapper); return stream().mapToInt(mapper); } @@ -78,7 +78,7 @@ public interface WrappedStream> extends Stream< * @return 叠加操作后元素类型全为long的流 */ @Override - default LongStream mapToLong(ToLongFunction mapper) { + default LongStream mapToLong(final ToLongFunction mapper) { Objects.requireNonNull(mapper); return stream().mapToLong(mapper); } @@ -91,7 +91,7 @@ public interface WrappedStream> extends Stream< * @return 叠加操作后元素类型全为double的流 */ @Override - default DoubleStream mapToDouble(ToDoubleFunction mapper) { + default DoubleStream mapToDouble(final ToDoubleFunction mapper) { Objects.requireNonNull(mapper); return stream().mapToDouble(mapper); } @@ -104,7 +104,7 @@ public interface WrappedStream> extends Stream< * @return 返回叠加拆分操作后的IntStream */ @Override - default IntStream flatMapToInt(Function mapper) { + default IntStream flatMapToInt(final Function mapper) { Objects.requireNonNull(mapper); return stream().flatMapToInt(mapper); } @@ -117,7 +117,7 @@ public interface WrappedStream> extends Stream< * @return 返回叠加拆分操作后的LongStream */ @Override - default LongStream flatMapToLong(Function mapper) { + default LongStream flatMapToLong(final Function mapper) { Objects.requireNonNull(mapper); return stream().flatMapToLong(mapper); } @@ -130,7 +130,7 @@ public interface WrappedStream> extends Stream< * @return 返回叠加拆分操作后的DoubleStream */ @Override - default DoubleStream flatMapToDouble(Function mapper) { + default DoubleStream flatMapToDouble(final Function mapper) { Objects.requireNonNull(mapper); return stream().flatMapToDouble(mapper); } @@ -169,7 +169,7 @@ public interface WrappedStream> extends Stream< * @return 一个元素按指定的Comparator排序的流 */ @Override - default S sorted(Comparator comparator) { + default S sorted(final Comparator comparator) { Objects.requireNonNull(comparator); return wrapping(stream().sorted(comparator)); } @@ -192,7 +192,7 @@ public interface WrappedStream> extends Stream< * } */ @Override - default S peek(Consumer action) { + default S peek(final Consumer action) { Objects.requireNonNull(action); return wrapping(stream().peek(action)); } @@ -205,7 +205,7 @@ public interface WrappedStream> extends Stream< * @return 截取后的流 */ @Override - default S limit(long maxSize) { + default S limit(final long maxSize) { return wrapping(stream().limit(maxSize)); } @@ -217,7 +217,7 @@ public interface WrappedStream> extends Stream< * @return 丢弃前面n个元素后的剩余元素组成的流 */ @Override - default S skip(long n) { + default S skip(final long n) { return wrapping(stream().skip(n)); } @@ -228,7 +228,7 @@ public interface WrappedStream> extends Stream< * @param action 操作 */ @Override - default void forEach(Consumer action) { + default void forEach(final Consumer action) { Objects.requireNonNull(action); stream().forEach(action); } @@ -240,7 +240,7 @@ public interface WrappedStream> extends Stream< * @param action 操作 */ @Override - default void forEachOrdered(Consumer action) { + default void forEachOrdered(final Consumer action) { Objects.requireNonNull(action); stream().forEachOrdered(action); } @@ -266,7 +266,7 @@ public interface WrappedStream> extends Stream< * @throws ArrayStoreException 如果元素转换失败,例如不是该元素类型及其父类,则抛出该异常 */ @Override - default
A[] toArray(IntFunction generator) { + default A[] toArray(final IntFunction generator) { Objects.requireNonNull(generator); return stream().toArray(generator); } @@ -292,7 +292,7 @@ public interface WrappedStream> extends Stream< * @return 聚合计算后的值 */ @Override - default T reduce(T identity, BinaryOperator accumulator) { + default T reduce(final T identity, final BinaryOperator accumulator) { Objects.requireNonNull(accumulator); return stream().reduce(identity, accumulator); } @@ -328,7 +328,7 @@ public interface WrappedStream> extends Stream< * @see #max(Comparator) */ @Override - default Optional reduce(BinaryOperator accumulator) { + default Optional reduce(final BinaryOperator accumulator) { Objects.requireNonNull(accumulator); return stream().reduce(accumulator); } @@ -346,7 +346,7 @@ public interface WrappedStream> extends Stream< * @see #reduce(Object, BinaryOperator) */ @Override - default U reduce(U identity, BiFunction accumulator, BinaryOperator combiner) { + default U reduce(final U identity, final BiFunction accumulator, final BinaryOperator combiner) { Objects.requireNonNull(accumulator); Objects.requireNonNull(combiner); return stream().reduce(identity, accumulator, combiner); @@ -366,7 +366,7 @@ public interface WrappedStream> extends Stream< * } */ @Override - default R collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) { + default R collect(final Supplier supplier, final BiConsumer accumulator, final BiConsumer combiner) { Objects.requireNonNull(supplier); Objects.requireNonNull(accumulator); Objects.requireNonNull(combiner); @@ -383,7 +383,7 @@ public interface WrappedStream> extends Stream< * @return 收集后的容器 */ @Override - default R collect(Collector collector) { + default R collect(final Collector collector) { Objects.requireNonNull(collector); return stream().collect(collector); } @@ -395,7 +395,7 @@ public interface WrappedStream> extends Stream< * @return 最小值 */ @Override - default Optional min(Comparator comparator) { + default Optional min(final Comparator comparator) { Objects.requireNonNull(comparator); return stream().min(comparator); } @@ -407,7 +407,7 @@ public interface WrappedStream> extends Stream< * @return 最大值 */ @Override - default Optional max(Comparator comparator) { + default Optional max(final Comparator comparator) { Objects.requireNonNull(comparator); return stream().max(comparator); } @@ -429,7 +429,7 @@ public interface WrappedStream> extends Stream< * @return 是否有任何一个元素满足给定断言 */ @Override - default boolean anyMatch(Predicate predicate) { + default boolean anyMatch(final Predicate predicate) { Objects.requireNonNull(predicate); return stream().anyMatch(predicate); } @@ -441,7 +441,7 @@ public interface WrappedStream> extends Stream< * @return 是否所有元素满足给定断言 */ @Override - default boolean allMatch(Predicate predicate) { + default boolean allMatch(final Predicate predicate) { Objects.requireNonNull(predicate); return stream().allMatch(predicate); } @@ -453,7 +453,7 @@ public interface WrappedStream> extends Stream< * @return 是否没有元素满足给定断言 */ @Override - default boolean noneMatch(Predicate predicate) { + default boolean noneMatch(final Predicate predicate) { Objects.requireNonNull(predicate); return stream().noneMatch(predicate); } diff --git a/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java b/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java index e1386591b..b32481663 100644 --- a/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/stream/EasyStreamTest.java @@ -181,7 +181,7 @@ public class EasyStreamTest { Assert.assertEquals(collect2, distinctBy2); Assert.assertEquals( - 4, EasyStream.of(1, 2, 2, null, 3, null).parallel(true).distinct(t -> Objects.isNull(t) ? null : t.toString()).count() + 4, EasyStream.of(1, 2, 2, null, 3, null).parallel(true).distinct(t -> Objects.isNull(t) ? null : t.toString()).sequential().count() ); }