mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
修改文档 修改final定义
This commit is contained in:
parent
3092201634
commit
d89541364f
@ -275,52 +275,52 @@ 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 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 {@link Opt}<{@link BigDecimal}> 如果元素的长度为0 那么会返回为空的opt
|
* @return {@link Opt}<{@link BigDecimal}>; 如果流的长度为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);
|
||||||
@ -328,53 +328,54 @@ 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 {@link Opt}<{@link BigDecimal}>
|
* @return {@link Opt}<{@link BigDecimal}> 如果流的长度为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 {@link Opt}<{@link BigDecimal}> 如果元素的长度为0 那么会返回为空的opt
|
* @return {@link Opt}<{@link BigDecimal}> 如果元素的长度为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.of(EasyStream.of(bigDecimalList).reduce(BigDecimal.ZERO, BigDecimal::add)
|
return Opt.ofNullable(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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,10 +383,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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,31 @@
|
|||||||
package cn.hutool.core.stream;
|
package cn.hutool.core.stream;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import static java.util.Collections.singletonList;
|
||||||
|
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.lang.Opt;
|
import cn.hutool.core.lang.Opt;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.math.NumberUtil;
|
import cn.hutool.core.math.NumberUtil;
|
||||||
import java.math.RoundingMode;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.math.RoundingMode;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.OptionalDouble;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.Assert;
|
||||||
import static java.util.Collections.singletonList;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author VampireAchao
|
* @author VampireAchao
|
||||||
@ -490,7 +499,7 @@ public class EasyStreamTest {
|
|||||||
public void testLongSumAndAvg() {
|
public void testLongSumAndAvg() {
|
||||||
//测试long类型的sum
|
//测试long类型的sum
|
||||||
long sum = EasyStream.of(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L).sum(Long::longValue);
|
long sum = EasyStream.of(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L).sum(Long::longValue);
|
||||||
Assert.assertEquals(55, sum);
|
Assert.assertEquals(55L, sum);
|
||||||
|
|
||||||
//测试long类型的空元素 sum
|
//测试long类型的空元素 sum
|
||||||
List<Long> longList = new ArrayList<>();
|
List<Long> longList = new ArrayList<>();
|
||||||
@ -512,10 +521,8 @@ public class EasyStreamTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testBigDecimalSumAndAvg() {
|
public void testBigDecimalSumAndAvg() {
|
||||||
//测试bigDecimal的sum
|
//测试bigDecimal的sum
|
||||||
BigDecimal sum = EasyStream.of(NumberUtil.toBigDecimal(1.1), NumberUtil.toBigDecimal(2.2),
|
BigDecimal sum = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10).map(NumberUtil::toBigDecimal)
|
||||||
NumberUtil.toBigDecimal(3.3), NumberUtil.toBigDecimal(4.4), NumberUtil.toBigDecimal(5.5),
|
.sum(Function.identity());
|
||||||
NumberUtil.toBigDecimal(6.6), NumberUtil.toBigDecimal(7.7), NumberUtil.toBigDecimal(8.8),
|
|
||||||
NumberUtil.toBigDecimal(9.9), NumberUtil.toBigDecimal(10.10)).sum(Function.identity());
|
|
||||||
Assert.assertEquals(NumberUtil.toBigDecimal(59.6), sum);
|
Assert.assertEquals(NumberUtil.toBigDecimal(59.6), sum);
|
||||||
|
|
||||||
//测试bigDecimal的sum 空元素
|
//测试bigDecimal的sum 空元素
|
||||||
@ -524,26 +531,20 @@ public class EasyStreamTest {
|
|||||||
Assert.assertEquals(BigDecimal.ZERO, emptySum);
|
Assert.assertEquals(BigDecimal.ZERO, emptySum);
|
||||||
|
|
||||||
//测试bigDecimal的avg全参
|
//测试bigDecimal的avg全参
|
||||||
Opt<BigDecimal> bigDecimalAvgFullParam = EasyStream.of(NumberUtil.toBigDecimal(1.1),
|
Opt<BigDecimal> bigDecimalAvgFullParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10)
|
||||||
NumberUtil.toBigDecimal(2.2), NumberUtil.toBigDecimal(3.3), NumberUtil.toBigDecimal(4.4),
|
.map(NumberUtil::toBigDecimal)
|
||||||
NumberUtil.toBigDecimal(5.5), NumberUtil.toBigDecimal(6.6), NumberUtil.toBigDecimal(7.7),
|
|
||||||
NumberUtil.toBigDecimal(8.8), NumberUtil.toBigDecimal(9.9), NumberUtil.toBigDecimal(10.10))
|
|
||||||
.avg(Function.identity(), 2, RoundingMode.HALF_UP);
|
.avg(Function.identity(), 2, RoundingMode.HALF_UP);
|
||||||
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgFullParam.get());
|
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgFullParam.get());
|
||||||
|
|
||||||
//测试bigDecimal的avg双参
|
//测试bigDecimal的avg单参
|
||||||
Opt<BigDecimal> bigDecimalAvgOneParam = EasyStream.of(NumberUtil.toBigDecimal(1.1),
|
Opt<BigDecimal> bigDecimalAvgOneParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10)
|
||||||
NumberUtil.toBigDecimal(2.2), NumberUtil.toBigDecimal(3.3), NumberUtil.toBigDecimal(4.4),
|
.map(NumberUtil::toBigDecimal)
|
||||||
NumberUtil.toBigDecimal(5.5), NumberUtil.toBigDecimal(6.6), NumberUtil.toBigDecimal(7.7),
|
|
||||||
NumberUtil.toBigDecimal(8.8), NumberUtil.toBigDecimal(9.9), NumberUtil.toBigDecimal(10.10))
|
|
||||||
.avg(Function.identity());
|
.avg(Function.identity());
|
||||||
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgOneParam.get());
|
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgOneParam.get());
|
||||||
|
|
||||||
//测试bigDecimal的avg单参
|
//测试bigDecimal的avg双参
|
||||||
Opt<BigDecimal> bigDecimalAvgTwoParam = EasyStream.of(NumberUtil.toBigDecimal(1.1),
|
Opt<BigDecimal> bigDecimalAvgTwoParam = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10)
|
||||||
NumberUtil.toBigDecimal(2.2), NumberUtil.toBigDecimal(3.3), NumberUtil.toBigDecimal(4.4),
|
.map(NumberUtil::toBigDecimal)
|
||||||
NumberUtil.toBigDecimal(5.5), NumberUtil.toBigDecimal(6.6), NumberUtil.toBigDecimal(7.7),
|
|
||||||
NumberUtil.toBigDecimal(8.8), NumberUtil.toBigDecimal(9.9), NumberUtil.toBigDecimal(10.10))
|
|
||||||
.avg(Function.identity(), 2);
|
.avg(Function.identity(), 2);
|
||||||
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgTwoParam.get());
|
Assert.assertEquals(NumberUtil.toBigDecimal(5.96), bigDecimalAvgTwoParam.get());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user