diff --git a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java index c6c9f14c0..9460a88e9 100644 --- a/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java +++ b/hutool-core/src/main/java/cn/hutool/core/stream/EasyStream.java @@ -9,13 +9,42 @@ 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 cn.hutool.core.util.ObjUtil; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.Spliterator; +import java.util.Spliterators; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.*; -import java.util.stream.*; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.BiPredicate; +import java.util.function.BinaryOperator; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.IntFunction; +import java.util.function.Predicate; +import java.util.function.Supplier; +import java.util.function.ToDoubleFunction; +import java.util.function.ToIntFunction; +import java.util.function.ToLongFunction; +import java.util.function.UnaryOperator; +import java.util.stream.Collector; +import java.util.stream.Collectors; +import java.util.stream.DoubleStream; +import java.util.stream.IntStream; +import java.util.stream.LongStream; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; /** *

{@link Stream}的扩展实现,基于原生Stream进行了封装和增强。
@@ -60,8 +89,13 @@ public class EasyStream implements Stream, Iterable { protected final Stream stream; - EasyStream(Stream stream) { - this.stream = stream; + /** + * 构造 + * + * @param stream {@link Stream} + */ + EasyStream(final Stream stream) { + this.stream = null == stream ? Stream.empty() : stream; } // region Static method @@ -79,7 +113,7 @@ public class EasyStream implements Stream, Iterable { private final Builder streamBuilder = Stream.builder(); @Override - public void accept(T t) { + public void accept(final T t) { streamBuilder.accept(t); } @@ -107,7 +141,7 @@ public class EasyStream implements Stream, Iterable { * @param 元素类型 * @return 包含单个元素的串行流 */ - public static EasyStream of(T t) { + public static EasyStream of(final T t) { return new EasyStream<>(Stream.of(t)); } @@ -121,7 +155,7 @@ public class EasyStream implements Stream, Iterable { */ @SafeVarargs @SuppressWarnings("varargs") - public static EasyStream of(T... values) { + public static EasyStream of(final T... values) { return ArrayUtil.isEmpty(values) ? EasyStream.empty() : new EasyStream<>(Stream.of(values)); } @@ -132,7 +166,7 @@ public class EasyStream implements Stream, Iterable { * @param 元素类型 * @return 流 */ - public static EasyStream of(Iterable iterable) { + public static EasyStream of(final Iterable iterable) { return of(iterable, false); } @@ -144,8 +178,12 @@ public class EasyStream implements Stream, Iterable { * @param 元素类型 * @return 流 */ - public static EasyStream of(Iterable iterable, boolean parallel) { - return Opt.ofNullable(iterable).map(Iterable::spliterator).map(spliterator -> StreamSupport.stream(spliterator, parallel)).map(EasyStream::new).orElseGet(EasyStream::empty); + public static EasyStream of(final Iterable iterable, final boolean parallel) { + return Opt.ofNullable(iterable) + .map(Iterable::spliterator) + .map(spliterator -> StreamSupport.stream(spliterator, parallel)) + .map(EasyStream::new) + .orElseGet(EasyStream::empty); } /** @@ -155,8 +193,8 @@ public class EasyStream implements Stream, Iterable { * @param 元素类型 * @return 流 */ - public static EasyStream of(Stream stream) { - return ObjUtil.isNull(stream) ? EasyStream.empty() : new EasyStream<>(stream); + public static EasyStream of(final Stream stream) { + return new EasyStream<>(stream); } /** @@ -192,7 +230,7 @@ public class EasyStream implements Stream, Iterable { * @param next 用上一个元素作为参数执行并返回一个新的元素 * @return 无限有序流 */ - public static EasyStream iterate(T seed, Predicate hasNext, UnaryOperator next) { + public static EasyStream iterate(final T seed, final Predicate hasNext, final UnaryOperator next) { Objects.requireNonNull(next); Objects.requireNonNull(hasNext); return new EasyStream<>(StreamUtil.iterate(seed, hasNext, next)); @@ -207,7 +245,7 @@ public class EasyStream implements Stream, Iterable { * @param s 用来生成元素的 {@code Supplier} * @return 无限串行无序流 */ - public static EasyStream generate(Supplier s) { + public static EasyStream generate(final Supplier s) { return new EasyStream<>(Stream.generate(s)); } @@ -223,7 +261,7 @@ public class EasyStream implements Stream, Iterable { * @param b 第二个流 * @return 拼接两个流之后的流 */ - public static EasyStream concat(Stream a, Stream b) { + public static EasyStream concat(final Stream a, final Stream b) { return new EasyStream<>(Stream.concat(a, b)); } @@ -234,7 +272,7 @@ public class EasyStream implements Stream, Iterable { * @param regex 正则 * @return 拆分后元素组成的流 */ - public static EasyStream split(CharSequence str, String regex) { + public static EasyStream split(final CharSequence str, final String regex) { return Opt.ofBlankAble(str).map(CharSequence::toString).map(s -> s.split(regex)).map(EasyStream::of).orElseGet(EasyStream::empty); } @@ -249,7 +287,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加过滤操作后的流 */ @Override - public EasyStream filter(Predicate predicate) { + public EasyStream filter(final Predicate predicate) { return new EasyStream<>(stream.filter(predicate)); } @@ -262,7 +300,7 @@ public class EasyStream implements Stream, Iterable { * @param value 用来匹配的值 * @return 与 指定操作结果 匹配 指定值 的元素组成的流 */ - public EasyStream filter(Function mapper, R value) { + public EasyStream filter(final Function mapper, final R value) { Objects.requireNonNull(mapper); return filter(e -> Objects.equals(mapper.apply(e), value)); } @@ -274,12 +312,12 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 返回叠加过滤操作后的流 */ - public EasyStream filterIdx(BiPredicate predicate) { + public EasyStream filterIdx(final BiPredicate predicate) { Objects.requireNonNull(predicate); if (isParallel()) { return filter(e -> predicate.test(e, NOT_FOUND_INDEX)); } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); return filter(e -> predicate.test(e, index.incrementAndGet())); } } @@ -302,7 +340,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加操作后的流 */ @Override - public EasyStream map(Function mapper) { + public EasyStream map(final Function mapper) { return new EasyStream<>(stream.map(mapper)); } @@ -318,7 +356,7 @@ public class EasyStream implements Stream, Iterable { * @param 函数执行后返回的类型 * @return 新元素组成的流 */ - public EasyStream mapNonNull(Function mapper) { + public EasyStream mapNonNull(final Function mapper) { return nonNull().map(mapper).nonNull(); } @@ -330,12 +368,12 @@ public class EasyStream implements Stream, Iterable { * @param 函数执行后返回的类型 * @return 返回叠加操作后的流 */ - public EasyStream mapIdx(BiFunction mapper) { + public EasyStream mapIdx(final BiFunction mapper) { Objects.requireNonNull(mapper); if (isParallel()) { return map(e -> mapper.apply(e, NOT_FOUND_INDEX)); } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); return map(e -> mapper.apply(e, index.incrementAndGet())); } } @@ -353,7 +391,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加拆分操作后的流 */ @Override - public EasyStream flatMap(Function> mapper) { + public EasyStream flatMap(final Function> mapper) { return new EasyStream<>(stream.flatMap(mapper)); } @@ -365,12 +403,12 @@ public class EasyStream implements Stream, Iterable { * @param 拆分后流的元素类型 * @return 返回叠加拆分操作后的流 */ - public EasyStream flatMapIdx(BiFunction> mapper) { + public EasyStream flatMapIdx(final BiFunction> mapper) { Objects.requireNonNull(mapper); if (isParallel()) { return flatMap(e -> mapper.apply(e, NOT_FOUND_INDEX)); } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); return flatMap(e -> mapper.apply(e, index.incrementAndGet())); } } @@ -383,7 +421,7 @@ public class EasyStream implements Stream, Iterable { * @return 叠加操作后元素类型全为int的流 */ @Override - public IntStream mapToInt(ToIntFunction mapper) { + public IntStream mapToInt(final ToIntFunction mapper) { return stream.mapToInt(mapper); } @@ -395,7 +433,7 @@ public class EasyStream implements Stream, Iterable { * @return 叠加操作后元素类型全为long的流 */ @Override - public LongStream mapToLong(ToLongFunction mapper) { + public LongStream mapToLong(final ToLongFunction mapper) { return stream.mapToLong(mapper); } @@ -407,7 +445,7 @@ public class EasyStream implements Stream, Iterable { * @return 叠加操作后元素类型全为double的流 */ @Override - public DoubleStream mapToDouble(ToDoubleFunction mapper) { + public DoubleStream mapToDouble(final ToDoubleFunction mapper) { return stream.mapToDouble(mapper); } @@ -424,7 +462,7 @@ public class EasyStream implements Stream, Iterable { * @param 拆分后流的元素类型 * @return 返回叠加拆分操作后的流 */ - public EasyStream flat(Function> mapper) { + public EasyStream flat(final Function> mapper) { Objects.requireNonNull(mapper); return flatMap(w -> of(mapper.apply(w))); } @@ -440,7 +478,7 @@ public class EasyStream implements Stream, Iterable { * @see #flat(Function) * @see #nonNull() */ - public EasyStream flatNonNull(Function> mapper) { + public EasyStream flatNonNull(final Function> mapper) { return nonNull().flat(mapper).nonNull(); } @@ -452,7 +490,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加拆分操作后的IntStream */ @Override - public IntStream flatMapToInt(Function mapper) { + public IntStream flatMapToInt(final Function mapper) { return stream.flatMapToInt(mapper); } @@ -464,7 +502,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加拆分操作后的LongStream */ @Override - public LongStream flatMapToLong(Function mapper) { + public LongStream flatMapToLong(final Function mapper) { return stream.flatMapToLong(mapper); } @@ -476,7 +514,7 @@ public class EasyStream implements Stream, Iterable { * @return 返回叠加拆分操作后的DoubleStream */ @Override - public DoubleStream flatMapToDouble(Function mapper) { + public DoubleStream flatMapToDouble(final Function mapper) { return stream.flatMapToDouble(mapper); } @@ -488,10 +526,10 @@ public class EasyStream implements Stream, Iterable { * @param 拆分后流的元素类型 * @return 返回叠加拆分操作后的流 */ - public EasyStream mapMulti(BiConsumer> mapper) { + public EasyStream mapMulti(final BiConsumer> mapper) { Objects.requireNonNull(mapper); return flatMap(e -> { - FastStreamBuilder buffer = EasyStream.builder(); + final FastStreamBuilder buffer = EasyStream.builder(); mapper.accept(e, buffer); return buffer.build(); }); @@ -516,15 +554,15 @@ public class EasyStream implements Stream, Iterable { * @param keyExtractor 去重依据 * @return 一个具有去重特征的流 */ - public EasyStream distinct(Function keyExtractor) { + public EasyStream distinct(final Function keyExtractor) { Objects.requireNonNull(keyExtractor); if (isParallel()) { - ConcurrentHashMap exists = MapUtil.newConcurrentHashMap(); + final ConcurrentHashMap exists = MapUtil.newConcurrentHashMap(); // 标记是否出现过null值,用于保留第一个出现的null // 由于ConcurrentHashMap的key不能为null,所以用此变量来标记 - AtomicBoolean hasNull = new AtomicBoolean(false); + final AtomicBoolean hasNull = new AtomicBoolean(false); return of(stream.filter(e -> { - F key = keyExtractor.apply(e); + final F key = keyExtractor.apply(e); if (key == null) { // 已经出现过null值,跳过该值 if (hasNull.get()) { @@ -538,7 +576,7 @@ public class EasyStream implements Stream, Iterable { } })).parallel(); } else { - Set exists = new HashSet<>(); + final Set exists = new HashSet<>(); return of(stream.filter(e -> exists.add(keyExtractor.apply(e)))); } } @@ -566,7 +604,7 @@ public class EasyStream implements Stream, Iterable { * @return 一个元素按指定的Comparator排序的流 */ @Override - public EasyStream sorted(Comparator comparator) { + public EasyStream sorted(final Comparator comparator) { return new EasyStream<>(stream.sorted(comparator)); } @@ -588,7 +626,7 @@ public class EasyStream implements Stream, Iterable { * } */ @Override - public EasyStream peek(Consumer action) { + public EasyStream peek(final Consumer action) { return new EasyStream<>(stream.peek(action)); } @@ -609,7 +647,7 @@ public class EasyStream implements Stream, Iterable { * @return 截取后的流 */ @Override - public EasyStream limit(long maxSize) { + public EasyStream limit(final long maxSize) { return new EasyStream<>(stream.limit(maxSize)); } @@ -621,7 +659,7 @@ public class EasyStream implements Stream, Iterable { * @return 丢弃前面n个元素后的剩余元素组成的流 */ @Override - public EasyStream skip(long n) { + public EasyStream skip(final long n) { return new EasyStream<>(stream.skip(n)); } @@ -644,7 +682,7 @@ public class EasyStream implements Stream, Iterable { * @param action 操作 */ @Override - public void forEach(Consumer action) { + public void forEach(final Consumer action) { stream.forEach(action); } @@ -654,12 +692,12 @@ public class EasyStream implements Stream, Iterable { * * @param action 操作 */ - public void forEachIdx(BiConsumer action) { + public void forEachIdx(final BiConsumer action) { Objects.requireNonNull(action); if (isParallel()) { stream.forEach(e -> action.accept(e, NOT_FOUND_INDEX)); } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); stream.forEach(e -> action.accept(e, index.incrementAndGet())); } } @@ -671,7 +709,7 @@ public class EasyStream implements Stream, Iterable { * @param action 操作 */ @Override - public void forEachOrdered(Consumer action) { + public void forEachOrdered(final Consumer action) { stream.forEachOrdered(action); } @@ -681,12 +719,12 @@ public class EasyStream implements Stream, Iterable { * * @param action 操作 */ - public void forEachOrderedIdx(BiConsumer action) { + public void forEachOrderedIdx(final BiConsumer action) { Objects.requireNonNull(action); if (isParallel()) { stream.forEachOrdered(e -> action.accept(e, NOT_FOUND_INDEX)); } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); stream.forEachOrdered(e -> action.accept(e, index.incrementAndGet())); } } @@ -712,7 +750,7 @@ public class EasyStream implements Stream, Iterable { * @throws ArrayStoreException 如果元素转换失败,例如不是该元素类型及其父类,则抛出该异常 */ @Override - public A[] toArray(IntFunction generator) { + public A[] toArray(final IntFunction generator) { //noinspection SuspiciousToArrayCall return stream.toArray(generator); } @@ -738,7 +776,7 @@ public class EasyStream implements Stream, Iterable { * @return 聚合计算后的值 */ @Override - public T reduce(T identity, BinaryOperator accumulator) { + public T reduce(final T identity, final BinaryOperator accumulator) { return stream.reduce(identity, accumulator); } @@ -773,7 +811,7 @@ public class EasyStream implements Stream, Iterable { * @see #max(Comparator) */ @Override - public Optional reduce(BinaryOperator accumulator) { + public Optional reduce(final BinaryOperator accumulator) { return stream.reduce(accumulator); } @@ -790,7 +828,7 @@ public class EasyStream implements Stream, Iterable { * @see #reduce(Object, BinaryOperator) */ @Override - public U reduce(U identity, BiFunction accumulator, BinaryOperator combiner) { + public U reduce(final U identity, final BiFunction accumulator, final BinaryOperator combiner) { return stream.reduce(identity, accumulator, combiner); } @@ -808,7 +846,7 @@ public class EasyStream implements Stream, Iterable { * } */ @Override - public R collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) { + public R collect(final Supplier supplier, final BiConsumer accumulator, final BiConsumer combiner) { return stream.collect(supplier, accumulator, combiner); } @@ -822,7 +860,7 @@ public class EasyStream implements Stream, Iterable { * @return 收集后的容器 */ @Override - public R collect(Collector collector) { + public R collect(final Collector collector) { return stream.collect(collector); } @@ -833,7 +871,7 @@ public class EasyStream implements Stream, Iterable { * @return 最小值 */ @Override - public Optional min(Comparator comparator) { + public Optional min(final Comparator comparator) { return stream.min(comparator); } @@ -844,7 +882,7 @@ public class EasyStream implements Stream, Iterable { * @return 最大值 */ @Override - public Optional max(Comparator comparator) { + public Optional max(final Comparator comparator) { return stream.max(comparator); } @@ -865,7 +903,7 @@ public class EasyStream implements Stream, Iterable { * @return 是否有任何一个元素满足给定断言 */ @Override - public boolean anyMatch(Predicate predicate) { + public boolean anyMatch(final Predicate predicate) { return stream.anyMatch(predicate); } @@ -876,7 +914,7 @@ public class EasyStream implements Stream, Iterable { * @return 是否所有元素满足给定断言 */ @Override - public boolean allMatch(Predicate predicate) { + public boolean allMatch(final Predicate predicate) { return stream.allMatch(predicate); } @@ -887,7 +925,7 @@ public class EasyStream implements Stream, Iterable { * @return 是否没有元素满足给定断言 */ @Override - public boolean noneMatch(Predicate predicate) { + public boolean noneMatch(final Predicate predicate) { return stream.noneMatch(predicate); } @@ -907,7 +945,7 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 与给定断言匹配的第一个元素 */ - public Optional findFirst(Predicate predicate) { + public Optional findFirst(final Predicate predicate) { return stream.filter(predicate).findFirst(); } @@ -917,12 +955,12 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 与给定断言匹配的第一个元素的下标,如果不存在则返回-1 */ - public int findFirstIdx(Predicate predicate) { + public int findFirstIdx(final Predicate predicate) { Objects.requireNonNull(predicate); if (isParallel()) { return NOT_FOUND_INDEX; } else { - MutableInt index = new MutableInt(NOT_FOUND_INDEX); + final MutableInt index = new MutableInt(NOT_FOUND_INDEX); //noinspection ResultOfMethodCallIgnored stream.filter(e -> { index.increment(); @@ -938,7 +976,7 @@ public class EasyStream implements Stream, Iterable { * @return 最后一个元素 */ public Optional findLast() { - MutableObj last = new MutableObj<>(null); + final MutableObj last = new MutableObj<>(null); spliterator().forEachRemaining(last::set); return Optional.ofNullable(last.get()); } @@ -949,9 +987,9 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 与给定断言匹配的最后一个元素 */ - public Optional findLast(Predicate predicate) { + public Optional findLast(final Predicate predicate) { Objects.requireNonNull(predicate); - MutableObj last = new MutableObj<>(null); + final MutableObj last = new MutableObj<>(null); spliterator().forEachRemaining(e -> { if (predicate.test(e)) { last.set(e); @@ -966,12 +1004,12 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 与给定断言匹配的最后一个元素的下标,如果不存在则返回-1 */ - public int findLastIdx(Predicate predicate) { + public int findLastIdx(final Predicate predicate) { Objects.requireNonNull(predicate); if (isParallel()) { return NOT_FOUND_INDEX; } else { - MutableInt idxRef = new MutableInt(NOT_FOUND_INDEX); + final MutableInt idxRef = new MutableInt(NOT_FOUND_INDEX); forEachIdx((e, i) -> { if (predicate.test(e)) { idxRef.set(i); @@ -1041,7 +1079,7 @@ public class EasyStream implements Stream, Iterable { * @param parallel 是否并行 * @return 流 */ - public EasyStream parallel(boolean parallel) { + public EasyStream parallel(final boolean parallel) { return parallel ? parallel() : sequential(); } @@ -1063,7 +1101,7 @@ public class EasyStream implements Stream, Iterable { * @return 流 */ @Override - public EasyStream onClose(Runnable closeHandler) { + public EasyStream onClose(final Runnable closeHandler) { //noinspection ResultOfMethodCallIgnored stream.onClose(closeHandler); return this; @@ -1075,7 +1113,7 @@ public class EasyStream implements Stream, Iterable { * @param obj 元素 * @return 流 */ - public EasyStream push(T obj) { + public EasyStream push(final T obj) { return EasyStream.concat(this.stream, of(obj)); } @@ -1086,7 +1124,7 @@ public class EasyStream implements Stream, Iterable { * @return 流 */ @SuppressWarnings("unchecked") - public EasyStream push(T... obj) { + public EasyStream push(final T... obj) { return EasyStream.concat(this.stream, of(obj)); } @@ -1096,7 +1134,7 @@ public class EasyStream implements Stream, Iterable { * @param obj 元素 * @return 流 */ - public EasyStream unshift(T obj) { + public EasyStream unshift(final T obj) { return EasyStream.concat(of(obj), this.stream); } @@ -1107,7 +1145,7 @@ public class EasyStream implements Stream, Iterable { * @return 流 */ @SafeVarargs - public final EasyStream unshift(T... obj) { + public final EasyStream unshift(final T... obj) { return EasyStream.concat(of(obj), this.stream); } @@ -1117,7 +1155,7 @@ public class EasyStream implements Stream, Iterable { * @param idx 下标 * @return 指定下标的元素 */ - public Optional at(Integer idx) { + public Optional at(final Integer idx) { return Opt.ofNullable(idx).map(i -> { //noinspection unchecked return (T) ArrayUtil.get(toArray(), i); @@ -1161,7 +1199,7 @@ public class EasyStream implements Stream, Iterable { * @return 结果 */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (obj instanceof Stream) { return stream.equals(obj); } @@ -1185,7 +1223,7 @@ public class EasyStream implements Stream, Iterable { * @param 集合类型 * @return 集合 */ - public > C toColl(Supplier collectionFactory) { + public > C toColl(final Supplier collectionFactory) { return collect(Collectors.toCollection(collectionFactory)); } @@ -1215,7 +1253,7 @@ public class EasyStream implements Stream, Iterable { * @param 可迭代对象迭代的元素类型 * @return map,key为现有元素,value为给定可迭代对象迭代的元素 */ - public Map toZip(Iterable other) { + public Map toZip(final Iterable other) { final Spliterator keys = spliterator(); final Spliterator values = Opt.ofNullable(other).map(Iterable::spliterator).orElseGet(Spliterators::emptySpliterator); // 获取两个Spliterator的中较小的数量 @@ -1223,9 +1261,9 @@ public class EasyStream implements Stream, Iterable { final int sizeIfKnown = (int) Math.max(Math.min(keys.getExactSizeIfKnown(), values.getExactSizeIfKnown()), MapUtil.DEFAULT_INITIAL_CAPACITY); final Map map = MapUtil.newHashMap(sizeIfKnown); // 保存第一个Spliterator的值 - MutableObj key = new MutableObj<>(); + final MutableObj key = new MutableObj<>(); // 保存第二个Spliterator的值 - MutableObj value = new MutableObj<>(); + final MutableObj value = new MutableObj<>(); // 当两个Spliterator中都还有剩余元素时 while (keys.tryAdvance(key::set) && values.tryAdvance(value::set)) { map.put(key.get(), value.get()); @@ -1248,7 +1286,7 @@ public class EasyStream implements Stream, Iterable { * @param delimiter 分隔符 * @return 拼接后的字符串 */ - public String join(CharSequence delimiter) { + public String join(final CharSequence delimiter) { return join(delimiter, StrUtil.EMPTY, StrUtil.EMPTY); } @@ -1260,9 +1298,9 @@ public class EasyStream implements Stream, Iterable { * @param suffix 后缀 * @return 拼接后的字符串 */ - public String join(CharSequence delimiter, - CharSequence prefix, - CharSequence suffix) { + public String join(final CharSequence delimiter, + final CharSequence prefix, + final CharSequence suffix) { return map(String::valueOf).collect(Collectors.joining(delimiter, prefix, suffix)); } @@ -1273,7 +1311,7 @@ public class EasyStream implements Stream, Iterable { * @param key类型 * @return map */ - public Map toMap(Function keyMapper) { + public Map toMap(final Function keyMapper) { return toMap(keyMapper, Function.identity()); } @@ -1286,8 +1324,8 @@ public class EasyStream implements Stream, Iterable { * @param value类型 * @return map */ - public Map toMap(Function keyMapper, - Function valueMapper) { + public Map toMap(final Function keyMapper, + final Function valueMapper) { return toMap(keyMapper, valueMapper, (l, r) -> r); } @@ -1301,9 +1339,9 @@ public class EasyStream implements Stream, Iterable { * @param value类型 * @return map */ - public Map toMap(Function keyMapper, - Function valueMapper, - BinaryOperator mergeFunction) { + public Map toMap(final Function keyMapper, + final Function valueMapper, + final BinaryOperator mergeFunction) { return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new); } @@ -1319,10 +1357,10 @@ public class EasyStream implements Stream, Iterable { * @param map类型 * @return map */ - public > M toMap(Function keyMapper, - Function valueMapper, - BinaryOperator mergeFunction, - Supplier mapSupplier) { + public > M toMap(final Function keyMapper, + final Function valueMapper, + final BinaryOperator mergeFunction, + final Supplier mapSupplier) { return collect(CollectorUtil.toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)); } @@ -1334,7 +1372,7 @@ public class EasyStream implements Stream, Iterable { * @param 实体中的分组依据对应类型,也是Map中key的类型 * @return {@link Collector} */ - public Map> group(Function classifier) { + public Map> group(final Function classifier) { return group(classifier, Collectors.toList()); } @@ -1348,8 +1386,8 @@ public class EasyStream implements Stream, Iterable { * @param 下游操作在进行中间操作时对应类型 * @return {@link Collector} */ - public Map group(Function classifier, - Collector downstream) { + public Map group(final Function classifier, + final Collector downstream) { return group(classifier, HashMap::new, downstream); } @@ -1365,9 +1403,9 @@ public class EasyStream implements Stream, Iterable { * @param 最后返回结果Map类型 * @return {@link Collector} */ - public > M group(Function classifier, - Supplier mapFactory, - Collector downstream) { + public > M group(final Function classifier, + final Supplier mapFactory, + final Collector downstream) { return collect(CollectorUtil.groupingBy(classifier, mapFactory, downstream)); } @@ -1381,8 +1419,8 @@ public class EasyStream implements Stream, Iterable { * @param 合并后的结果对象类型 * @return 合并后的结果对象的流 */ - public EasyStream zip(Iterable other, - BiFunction zipper) { + public EasyStream zip(final Iterable other, + final BiFunction zipper) { Objects.requireNonNull(zipper); final Spliterator keys = spliterator(); final Spliterator values = Opt.ofNullable(other).map(Iterable::spliterator).orElseGet(Spliterators::emptySpliterator); @@ -1391,9 +1429,9 @@ public class EasyStream implements Stream, Iterable { final int sizeIfKnown = (int) Math.max(Math.min(keys.getExactSizeIfKnown(), values.getExactSizeIfKnown()), 10); final List list = new ArrayList<>(sizeIfKnown); // 保存第一个Spliterator的值 - MutableObj key = new MutableObj<>(); + final MutableObj key = new MutableObj<>(); // 保存第二个Spliterator的值 - MutableObj value = new MutableObj<>(); + final MutableObj value = new MutableObj<>(); // 当两个Spliterator中都还有剩余元素时 while (keys.tryAdvance(key::set) && values.tryAdvance(value::set)) { list.add(zipper.apply(key.get(), value.get())); @@ -1410,7 +1448,7 @@ public class EasyStream implements Stream, Iterable { * @return 操作后的流 */ @SafeVarargs - public final EasyStream splice(int start, int deleteCount, T... items) { + public final EasyStream splice(final int start, final int deleteCount, final T... items) { return of(ListUtil.splice(toList(), start, deleteCount, items)) .parallel(isParallel()) .onClose(stream::close); @@ -1426,7 +1464,7 @@ public class EasyStream implements Stream, Iterable { * @return 切好的流 */ public EasyStream> split(final int batchSize) { - List list = toList(); + final List list = toList(); final int size = list.size(); // 指定长度 大于等于 列表长度 if (size <= batchSize) { @@ -1471,7 +1509,7 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 与指定断言匹配的元素组成的流 */ - public EasyStream takeWhile(Predicate predicate) { + public EasyStream takeWhile(final Predicate predicate) { Objects.requireNonNull(predicate); return of(StreamUtil.takeWhile(stream, predicate)); } @@ -1496,7 +1534,7 @@ public class EasyStream implements Stream, Iterable { * @param predicate 断言 * @return 剩余元素组成的流 */ - public EasyStream dropWhile(Predicate predicate) { + public EasyStream dropWhile(final Predicate predicate) { Objects.requireNonNull(predicate); return of(StreamUtil.dropWhile(stream, predicate)); } @@ -1526,7 +1564,7 @@ public class EasyStream implements Stream, Iterable { * @param transform 转换 * @return 转换后的流 */ - public Optional transform(Function, R> transform) { + public Optional transform(final Function, R> transform) { Assert.notNull(transform, "transform must not null"); return Optional.ofNullable(transform.apply(this)); } @@ -1546,7 +1584,7 @@ public class EasyStream implements Stream, Iterable { * return this; * } */ - default FastStreamBuilder add(T t) { + default FastStreamBuilder add(final T t) { accept(t); return this; } diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java index d731f5dda..086ec49d8 100755 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java @@ -1,7 +1,7 @@ package cn.hutool.core.collection; import cn.hutool.core.collection.iter.IterUtil; -import cn.hutool.core.comparator.ComparableComparator; +import cn.hutool.core.comparator.CompareUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.map.Dict; @@ -858,9 +858,9 @@ public class CollUtilTest { } @Test - public void sortComparableTest() { + public void sortNaturalTest() { final List of = ListUtil.of("a", "c", "b"); - final List sort = CollUtil.sort(of, new ComparableComparator<>()); + final List sort = CollUtil.sort(of, CompareUtil.natural()); Assert.assertEquals("a,b,c", CollUtil.join(sort, ",")); } 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 e989b39cd..e07ad4a4e 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 @@ -19,13 +19,13 @@ public class EasyStreamTest { @Test public void testBuilder() { - List list = EasyStream.builder().add(1).add(2).add(3).build().toList(); + final List list = EasyStream.builder().add(1).add(2).add(3).build().toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), list); } @Test public void testGenerate() { - List list = EasyStream.generate(() -> 0).limit(3).toList(); + final List list = EasyStream.generate(() -> 0).limit(3).toList(); Assert.assertEquals(Arrays.asList(0, 0, 0), list); } @@ -38,58 +38,58 @@ public class EasyStreamTest { @Test public void testSplit() { - List list = EasyStream.split("1,2,3", ",").map(Integer::valueOf).toList(); + final List list = EasyStream.split("1,2,3", ",").map(Integer::valueOf).toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), list); } @Test public void testIterator() { - List list = EasyStream.iterate(0, i -> i < 3, i -> ++i).toList(); + final List list = EasyStream.iterate(0, i -> i < 3, i -> ++i).toList(); Assert.assertEquals(Arrays.asList(0, 1, 2), list); } @Test public void testToCollection() { - List list = Arrays.asList(1, 2, 3); - List toCollection = EasyStream.of(list).map(String::valueOf).toColl(LinkedList::new); + final List list = Arrays.asList(1, 2, 3); + final List toCollection = EasyStream.of(list).map(String::valueOf).toColl(LinkedList::new); Assert.assertEquals(Arrays.asList("1", "2", "3"), toCollection); } @Test public void testToList() { - List list = Arrays.asList(1, 2, 3); - List toList = EasyStream.of(list).map(String::valueOf).toList(); + final List list = Arrays.asList(1, 2, 3); + final List toList = EasyStream.of(list).map(String::valueOf).toList(); Assert.assertEquals(Arrays.asList("1", "2", "3"), toList); } @Test public void testToSet() { - List list = Arrays.asList(1, 2, 3); - Set toSet = EasyStream.of(list).map(String::valueOf).toSet(); + final List list = Arrays.asList(1, 2, 3); + final Set toSet = EasyStream.of(list).map(String::valueOf).toSet(); Assert.assertEquals(new HashSet<>(Arrays.asList("1", "2", "3")), toSet); } @Test public void testToZip() { - List orders = Arrays.asList(1, 2, 3, 2); - List list = Arrays.asList("dromara", "guava", "sweet", "hutool"); + final List orders = Arrays.asList(1, 2, 3, 2); + final List list = Arrays.asList("dromara", "guava", "sweet", "hutool"); final Map map = MapUtil.builder() .put(1, "dromara") .put(2, "hutool") .put(3, "sweet") .build(); - Map toZip = EasyStream.of(orders).toZip(list); + final Map toZip = EasyStream.of(orders).toZip(list); Assert.assertEquals(map, toZip); - Map toZipParallel = EasyStream.of(orders).parallel().nonNull().toZip(list); + final Map toZipParallel = EasyStream.of(orders).parallel().nonNull().toZip(list); Assert.assertEquals(map, toZipParallel); } @Test public void testJoin() { - List list = Arrays.asList(1, 2, 3); - String joining = EasyStream.of(list).join(); + final List list = Arrays.asList(1, 2, 3); + final String joining = EasyStream.of(list).join(); Assert.assertEquals("123", joining); Assert.assertEquals("1,2,3", EasyStream.of(list).join(",")); Assert.assertEquals("(1,2,3)", EasyStream.of(list).join(",", "(", ")")); @@ -97,8 +97,8 @@ public class EasyStreamTest { @Test public void testToMap() { - List list = Arrays.asList(1, 2, 3); - Map identityMap = EasyStream.of(list).toMap(String::valueOf); + final List list = Arrays.asList(1, 2, 3); + final Map identityMap = EasyStream.of(list).toMap(String::valueOf); Assert.assertEquals(new HashMap() { private static final long serialVersionUID = 1L; @@ -112,8 +112,8 @@ public class EasyStreamTest { @Test public void testGroup() { - List list = Arrays.asList(1, 2, 3); - Map> group = EasyStream.of(list).group(String::valueOf); + final List list = Arrays.asList(1, 2, 3); + final Map> group = EasyStream.of(list).group(String::valueOf); Assert.assertEquals( new HashMap>() { private static final long serialVersionUID = 1L; @@ -128,8 +128,8 @@ public class EasyStreamTest { @Test public void testMapIdx() { - List list = Arrays.asList("dromara", "hutool", "sweet"); - List mapIndex = EasyStream.of(list).mapIdx((e, i) -> i + 1 + "." + e).toList(); + final List list = Arrays.asList("dromara", "hutool", "sweet"); + final List mapIndex = EasyStream.of(list).mapIdx((e, i) -> i + 1 + "." + e).toList(); Assert.assertEquals(Arrays.asList("1.dromara", "2.hutool", "3.sweet"), mapIndex); // 并行流时为-1 Assert.assertEquals(Arrays.asList(-1, -1, -1), EasyStream.of(1, 2, 3).parallel().mapIdx((e, i) -> i).toList()); @@ -137,8 +137,8 @@ public class EasyStreamTest { @Test public void testMapMulti() { - List list = Arrays.asList(1, 2, 3); - List mapMulti = EasyStream.of(list).mapMulti((e, buffer) -> { + final List list = Arrays.asList(1, 2, 3); + final List mapMulti = EasyStream.of(list).mapMulti((e, buffer) -> { for (int i = 0; i < e; i++) { buffer.accept(e); } @@ -148,24 +148,24 @@ public class EasyStreamTest { @Test public void testMapNonNull() { - List list = Arrays.asList(1, 2, 3, null); - List mapNonNull = EasyStream.of(list).mapNonNull(String::valueOf).toList(); + final List list = Arrays.asList(1, 2, 3, null); + final List mapNonNull = EasyStream.of(list).mapNonNull(String::valueOf).toList(); Assert.assertEquals(Arrays.asList("1", "2", "3"), mapNonNull); } @Test public void testDistinct() { - List list = ListUtil.of(3, 2, 2, 1, null, null); + final List list = ListUtil.of(3, 2, 2, 1, null, null); for (int i = 0; i < 1000; i++) { list.add(i); } // 使用stream去重 - List collect1 = list.stream().distinct().collect(Collectors.toList()); - List collect2 = list.stream().parallel().distinct().collect(Collectors.toList()); + final List collect1 = list.stream().distinct().collect(Collectors.toList()); + final List collect2 = list.stream().parallel().distinct().collect(Collectors.toList()); // 使用FastStream去重 - List distinctBy1 = EasyStream.of(list).distinct().toList(); - List distinctBy2 = EasyStream.of(list).parallel().distinct(String::valueOf).toList(); + final List distinctBy1 = EasyStream.of(list).distinct().toList(); + final List distinctBy2 = EasyStream.of(list).parallel().distinct(String::valueOf).toList(); Assert.assertEquals(collect1, distinctBy1); Assert.assertEquals(collect2, distinctBy2); @@ -173,8 +173,8 @@ public class EasyStreamTest { @Test public void testForeachIdx() { - List list = Arrays.asList("dromara", "hutool", "sweet"); - EasyStream.FastStreamBuilder builder = EasyStream.builder(); + final List list = Arrays.asList("dromara", "hutool", "sweet"); + final EasyStream.FastStreamBuilder builder = EasyStream.builder(); EasyStream.of(list).forEachIdx((e, i) -> builder.accept(i + 1 + "." + e)); Assert.assertEquals(Arrays.asList("1.dromara", "2.hutool", "3.sweet"), builder.build().toList()); // 并行流时为-1 @@ -183,12 +183,12 @@ public class EasyStreamTest { @Test public void testForEachOrderedIdx() { - List list = Arrays.asList("dromara", "hutool", "sweet"); - EasyStream.FastStreamBuilder builder = EasyStream.builder(); + final List list = Arrays.asList("dromara", "hutool", "sweet"); + final EasyStream.FastStreamBuilder builder = EasyStream.builder(); EasyStream.of(list).forEachOrderedIdx((e, i) -> builder.accept(i + 1 + "." + e)); Assert.assertEquals(Arrays.asList("1.dromara", "2.hutool", "3.sweet"), builder.build().toList()); - EasyStream.FastStreamBuilder streamBuilder = EasyStream.builder(); + final EasyStream.FastStreamBuilder streamBuilder = EasyStream.builder(); EasyStream.of(list).parallel().forEachOrderedIdx((e, i) -> streamBuilder.accept(i + 1 + "." + e)); Assert.assertEquals(Arrays.asList("0.dromara", "0.hutool", "0.sweet"), streamBuilder.build().toList()); @@ -196,8 +196,8 @@ public class EasyStreamTest { @Test public void testFlatMapIdx() { - List list = Arrays.asList("dromara", "hutool", "sweet"); - List mapIndex = EasyStream.of(list).flatMapIdx((e, i) -> EasyStream.of(i + 1 + "." + e)).toList(); + final List list = Arrays.asList("dromara", "hutool", "sweet"); + final List mapIndex = EasyStream.of(list).flatMapIdx((e, i) -> EasyStream.of(i + 1 + "." + e)).toList(); Assert.assertEquals(Arrays.asList("1.dromara", "2.hutool", "3.sweet"), mapIndex); // 并行流时为-1 Assert.assertEquals(Arrays.asList(-1, -1, -1), EasyStream.of(1, 2, 3).parallel().flatMapIdx((e, i) -> EasyStream.of(i)).toList()); @@ -205,7 +205,7 @@ public class EasyStreamTest { @Test public void testFlat() { - List list = Arrays.asList(1, 2, 3); + final List list = Arrays.asList(1, 2, 3); // 一个元素 扩散为 多个元素(迭代器) List flat = EasyStream.of(list).flat(e -> Arrays.asList(e, e * 10)).toList(); @@ -224,15 +224,15 @@ public class EasyStreamTest { @Test public void testFilter() { - List list = Arrays.asList(1, 2, 3); - List filterIndex = EasyStream.of(list).filter(String::valueOf, "1").toList(); + final List list = Arrays.asList(1, 2, 3); + final List filterIndex = EasyStream.of(list).filter(String::valueOf, "1").toList(); Assert.assertEquals(Collections.singletonList(1), filterIndex); } @Test public void testFilterIdx() { - List list = Arrays.asList("dromara", "hutool", "sweet"); - List filterIndex = EasyStream.of(list).filterIdx((e, i) -> i < 2).toList(); + final List list = Arrays.asList("dromara", "hutool", "sweet"); + final List filterIndex = EasyStream.of(list).filterIdx((e, i) -> i < 2).toList(); Assert.assertEquals(Arrays.asList("dromara", "hutool"), filterIndex); // 并行流时为-1 Assert.assertEquals(3L, EasyStream.of(1, 2, 3).parallel().filterIdx((e, i) -> i == -1).count()); @@ -240,8 +240,8 @@ public class EasyStreamTest { @Test public void testNonNull() { - List list = Arrays.asList(1, null, 2, 3); - List nonNull = EasyStream.of(list).nonNull().toList(); + final List list = Arrays.asList(1, null, 2, 3); + final List nonNull = EasyStream.of(list).nonNull().toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), nonNull); } @@ -253,8 +253,8 @@ public class EasyStreamTest { @Test public void testPush() { - List list = Arrays.asList(1, 2); - List push = EasyStream.of(list).push(3).toList(); + final List list = Arrays.asList(1, 2); + final List push = EasyStream.of(list).push(3).toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), push); Assert.assertEquals(Arrays.asList(1, 2, 3, 4), EasyStream.of(list).push(3, 4).toList()); @@ -262,8 +262,8 @@ public class EasyStreamTest { @Test public void testUnshift() { - List list = Arrays.asList(2, 3); - List unshift = EasyStream.of(list).unshift(1).toList(); + final List list = Arrays.asList(2, 3); + final List unshift = EasyStream.of(list).unshift(1).toList(); Assert.assertEquals(Arrays.asList(1, 2, 3), unshift); Assert.assertEquals(Arrays.asList(1, 2, 2, 3), EasyStream.of(list).unshift(1, 2).toList()); @@ -271,7 +271,7 @@ public class EasyStreamTest { @Test public void testAt() { - List list = Arrays.asList(1, 2, 3); + final List list = Arrays.asList(1, 2, 3); Assert.assertEquals(1, (Object) EasyStream.of(list).at(0).orElse(null)); Assert.assertEquals(2, (Object) EasyStream.of(list).at(1).orElse(null)); Assert.assertEquals(3, (Object) EasyStream.of(list).at(2).orElse(null)); @@ -282,7 +282,7 @@ public class EasyStreamTest { @Test public void testSplice() { - List list = Arrays.asList(1, 2, 3); + final List list = Arrays.asList(1, 2, 3); Assert.assertEquals(Arrays.asList(1, 2, 2, 3), EasyStream.of(list).splice(1, 0, 2).toList()); Assert.assertEquals(Arrays.asList(1, 2, 3, 3), EasyStream.of(list).splice(3, 1, 3).toList()); Assert.assertEquals(Arrays.asList(1, 2, 4), EasyStream.of(list).splice(2, 1, 4).toList()); @@ -294,25 +294,25 @@ public class EasyStreamTest { @Test public void testFindFirst() { - List list = Arrays.asList(1, 2, 3); - Integer find = EasyStream.of(list).findFirst(Objects::nonNull).orElse(null); + final List list = Arrays.asList(1, 2, 3); + final Integer find = EasyStream.of(list).findFirst(Objects::nonNull).orElse(null); Assert.assertEquals(1, (Object) find); } @Test public void testFindFirstIdx() { - List list = Arrays.asList(null, 2, 3); + final List list = Arrays.asList(null, 2, 3); Assert.assertEquals(1, EasyStream.of(list).findFirstIdx(Objects::nonNull)); Assert.assertEquals(-1, (Object) EasyStream.of(list).parallel().findFirstIdx(Objects::nonNull)); } @Test public void testFindLast() { - List list = ListUtil.of(1, 2, 4, 5, 6, 7, 8, 9, 10, 3); + final List list = ListUtil.of(1, 2, 4, 5, 6, 7, 8, 9, 10, 3); Assert.assertEquals(3, (Object) EasyStream.of(list).findLast().orElse(null)); Assert.assertEquals(3, (Object) EasyStream.of(list).parallel().findLast().orElse(null)); - List list2 = ListUtil.of(1, 2, 4, 5, 6, 7, 8, 9, 10, 3, null); + final List list2 = ListUtil.of(1, 2, 4, 5, 6, 7, 8, 9, 10, 3, null); Assert.assertEquals(3, (Object) EasyStream.of(list2).parallel().findLast(Objects::nonNull).orElse(null)); Assert.assertNull(EasyStream.of().parallel().findLast(Objects::nonNull).orElse(null)); @@ -321,7 +321,7 @@ public class EasyStreamTest { @Test public void testFindLastIdx() { - List list = Arrays.asList(1, null, 3); + final List list = Arrays.asList(1, null, 3); Assert.assertEquals(2, (Object) EasyStream.of(list).findLastIdx(Objects::nonNull)); Assert.assertEquals(-1, (Object) EasyStream.of(list).parallel().findLastIdx(Objects::nonNull)); } @@ -337,8 +337,8 @@ public class EasyStreamTest { @Test public void testZip() { - List orders = Arrays.asList(1, 2, 3); - List list = Arrays.asList("dromara", "hutool", "sweet"); + final List orders = Arrays.asList(1, 2, 3); + final List list = Arrays.asList("dromara", "hutool", "sweet"); List zip = EasyStream.of(orders).zip(list, (e1, e2) -> e1 + "." + e2).toList(); Assert.assertEquals(Arrays.asList("1.dromara", "2.hutool", "3.sweet"), zip); @@ -348,7 +348,7 @@ public class EasyStreamTest { @Test public void testListSplit() { - List list = Arrays.asList(1, 2, 3, 4, 5); + final List list = Arrays.asList(1, 2, 3, 4, 5); List> lists = EasyStream.of(list).split(2).map(EasyStream::toList).toList(); Assert.assertEquals(ListUtil.split(list, 2), lists); @@ -359,7 +359,7 @@ public class EasyStreamTest { @Test public void testSplitList() { - List list = Arrays.asList(1, 2, 3, 4, 5); + final List list = Arrays.asList(1, 2, 3, 4, 5); List> lists = EasyStream.of(list).splitList(2).toList(); Assert.assertEquals(ListUtil.split(list, 2), lists); @@ -429,7 +429,7 @@ public class EasyStreamTest { @Test public void testTransform() { - boolean result = EasyStream.of(1, 2, 3) + final boolean result = EasyStream.of(1, 2, 3) .transform(EasyStream::toList) .map(List::isEmpty) .orElse(false);