修改文档

This commit is contained in:
LoveHuahua 2023-02-28 14:08:12 +08:00
parent 5556701c91
commit 0b72ada03f

View File

@ -5,14 +5,20 @@ import cn.hutool.core.lang.Opt;
import cn.hutool.core.math.NumberUtil; import cn.hutool.core.math.NumberUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.OptionalDouble; import java.util.OptionalDouble;
import java.util.Spliterator; import java.util.Spliterator;
import java.util.function.*; import java.util.function.Consumer;
import java.util.function.Function;
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.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import java.util.stream.StreamSupport; import java.util.stream.StreamSupport;
@ -206,11 +212,11 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
/** /**
* 返回无限串行无序流 * 返回无限串行无序流
* 其中每一个元素都由给定的{@link Supplier}生成 * 其中每一个元素都由给定的{@link Supplier}生成
* 适用场景在一些生成常量流随机元素等 * 适用场景在一些生成常量流随机元素等
* *
* @param <T> 元素类型 * @param <T> 元素类型
* @param s 用来生成元素的 {@link Supplier} * @param s 用来生成元素的 {@link Supplier}
* @return 无限串行无序流 * @return 无限串行无序流
*/ */
public static <T> EasyStream<T> generate(final Supplier<T> s) { public static <T> EasyStream<T> generate(final Supplier<T> s) {
@ -275,53 +281,54 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
/** /**
* 计算int类型总和 * 计算int类型总和
* *
* @param mapper 映射 * @param mapper 将对象转换为int的 {@link Function}
* @return int * @return int 总和
*/ */
public int sum(ToIntFunction<? super T> mapper) { public int sum(final ToIntFunction<? super T> mapper) {
return stream.mapToInt(mapper).sum(); return stream.mapToInt(mapper).sum();
} }
/** /**
* 计算long类型总和 * 计算long类型总和
* *
* @param mapper 映射 * @param mapper 将对象转换为long的 {@link Function}
* @return long * @return long 总和
*/ */
public long sum(ToLongFunction<? super T> mapper) { public long sum(final ToLongFunction<? super T> mapper) {
return stream.mapToLong(mapper).sum(); return stream.mapToLong(mapper).sum();
} }
/** /**
* 计算double总和 * 计算double类型的总和
* *
* @param mapper 映射器 * @param mapper 将对象转换为double的 {@link Function}
* @return double * @return double 总和
*/ */
public double sum(ToDoubleFunction<? super T> mapper) { public double sum(final ToDoubleFunction<? super T> mapper) {
return stream.mapToDouble(mapper).sum(); return stream.mapToDouble(mapper).sum();
} }
/** /**
* 计算number的总和 * 计算 {@link Number} 类型的总和
* *
* @param mapper 映射 * @param <R> 数字
* @param <R> 映射后的类型 * @param mapper 将对象转换为{@link Number} {@link Function}
* @return {@link BigDecimal} * @return {@link BigDecimal} , 如果流为空, 返回 {@link BigDecimal#ZERO}
*/ */
public <R extends Number> BigDecimal sum(final Function<? super T, R> mapper) { public <R extends Number> BigDecimal sum(final Function<? super T, R> mapper) {
return stream.map(mapper).reduce(BigDecimal.ZERO, NumberUtil::add,NumberUtil::add); return stream.map(mapper).reduce(BigDecimal.ZERO, NumberUtil::add, NumberUtil::add);
} }
/** /**
* 计算bigDecimal平均值 并以四舍五入的方式保留2位精度 * 计算 {@link BigDecimal} 类型的平均值 并以四舍五入的方式保留2位精度
* *
* @param mapper 映射 * @param mapper 将对象转换为{@link BigDecimal} {@link Function}
* @return 计算结果 如果元素的长度为0 那么会返回为空的opt * @return 计算后的平均值 如果流的长度为0, 返回 {@link Opt#empty()}
*/ */
public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper) { public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper) {
return avg(mapper, 2); return avg(mapper, 2);
@ -329,53 +336,53 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
/** /**
* 计算bigDecimal平均值 并以四舍五入的方式保留scale的进度 * {@link BigDecimal} 类型的平均值 并以四舍五入的方式保留小数点后scale位
* *
* @param mapper 映射 * @param mapper 将对象转换为{@link BigDecimal} {@link Function}
* @param scale 精度 * @param scale 保留精度
* @return 计算结果 如果元素的长度为0 那么会返回为空的opt * @return 计算后的平均值 如果流的长度为0, 返回 {@link Opt#empty()}
*/ */
public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper, int scale) { public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper, final int scale) {
return avg(mapper, scale, RoundingMode.HALF_UP); return avg(mapper, scale, RoundingMode.HALF_UP);
} }
/** /**
* 计算bigDecimal平均值 * 计算 {@link BigDecimal} 类型的平均值
* *
* @param mapper 映射 * @param mapper 将对象转换为{@link BigDecimal} {@link Function}
* @param scale 精度 * @param scale 保留精度
* @param roundingMode 舍入模式 * @param roundingMode 舍入模式
* @return 计算结果 如果元素的长度为0 那么会返回为空的opt * @return 计算后的平均值 如果元素的长度为0 那么会返回 {@link Opt#empty()}
*/ */
public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper, int scale, RoundingMode roundingMode) { public Opt<BigDecimal> avg(final Function<? super T, BigDecimal> mapper, final int scale,
final RoundingMode roundingMode) {
//元素列表 //元素列表
List<BigDecimal> bigDecimalList = stream.map(mapper).collect(Collectors.toList()); List<BigDecimal> bigDecimalList = stream.map(mapper).collect(Collectors.toList());
if (CollUtil.isEmpty(bigDecimalList)) { if (CollUtil.isEmpty(bigDecimalList)) {
return Opt.ofNullable(null); return Opt.empty();
} }
return Opt.ofNullable(EasyStream.of(bigDecimalList).reduce(BigDecimal.ZERO, BigDecimal::add)
return Opt.of(EasyStream.of(bigDecimalList).reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(NumberUtil.toBigDecimal(bigDecimalList.size()), scale, roundingMode)); .divide(NumberUtil.toBigDecimal(bigDecimalList.size()), scale, roundingMode));
} }
/** /**
* 计算int平均值 * 计算int类型的平均值
* *
* @param mapper 映射器 * @param mapper 将对象转换为int {@link Function}
* @return {@link OptionalDouble} * @return {@link OptionalDouble} 如果流的长度为0 那么会返回{@link OptionalDouble#empty()}
*/ */
public OptionalDouble avg(ToIntFunction<? super T> mapper) { public OptionalDouble avg(final ToIntFunction<? super T> mapper) {
return stream.mapToInt(mapper).average(); return stream.mapToInt(mapper).average();
} }
/** /**
* 计算double平均值 * 计算double类型的平均值
* *
* @param mapper 映射 * @param mapper 将对象转换为double {@link Function}
* @return {@link OptionalDouble} * @return {@link OptionalDouble} 如果流的长度为0 那么会返回{@link OptionalDouble#empty()}
*/ */
public OptionalDouble avg(ToDoubleFunction<? super T> mapper) { public OptionalDouble avg(final ToDoubleFunction<? super T> mapper) {
return stream.mapToDouble(mapper).average(); return stream.mapToDouble(mapper).average();
} }
@ -383,10 +390,10 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
/** /**
* 计算double平均值 * 计算double平均值
* *
* @param mapper 映射 * @param mapper 将对象转换为long {@link Function}
* @return {@link OptionalDouble} * @return {@link OptionalDouble} 如果流的长度为0 那么会返回{@link OptionalDouble#empty()}
*/ */
public OptionalDouble avg(ToLongFunction<? super T> mapper) { public OptionalDouble avg(final ToLongFunction<? super T> mapper) {
return stream.mapToLong(mapper).average(); return stream.mapToLong(mapper).average();
} }
@ -407,9 +414,9 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
* the built state * the built state
* @implSpec The default implementation behaves as if: * @implSpec The default implementation behaves as if:
* <pre>{@code * <pre>{@code
* accept(t) * accept(t)
* return this; * return this;
* }</pre> * }</pre>
*/ */
default Builder<T> add(final T t) { default Builder<T> add(final T t) {
accept(t); accept(t);