添加针对 int long double类型的sum和avg方法

This commit is contained in:
huahua 2022-07-26 10:07:15 +08:00
parent 5753444de2
commit b1e9f263bc
2 changed files with 78 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import java.util.Objects;
import java.util.OptionalDouble;
import java.util.Spliterator;
import java.util.function.*;
import java.util.stream.Stream;
@ -264,6 +265,74 @@ public class EasyStream<T> extends AbstractEnhancedWrappedStream<T, EasyStream<T
return new EasyStream<>(stream);
}
/**
* 计算int类型总和
*
* @param mapper 映射
* @return int
*/
public int sum(ToIntFunction<? super T> mapper) {
return stream.mapToInt(mapper).sum();
}
/**
* 计算long类型总和
*
* @param mapper 映射
* @return long
*/
public long sum(ToLongFunction<? super T> mapper) {
return stream.mapToLong(mapper).sum();
}
/**
* 计算double总和
*
* @param mapper 映射器
* @return double
*/
public double sum(ToDoubleFunction<? super T> mapper) {
return stream.mapToDouble(mapper).sum();
}
/**
* 计算int平均值
*
* @param mapper 映射器
* @return {@link Integer}
*/
public OptionalDouble avg(ToIntFunction<? super T> mapper) {
return stream.mapToInt(mapper).average();
}
/**
* 计算double平均值
*
* @param mapper 映射
* @return {@link OptionalDouble}
*/
public OptionalDouble avg(ToDoubleFunction<? super T> mapper) {
return stream.mapToDouble(mapper).average();
}
/**
* 计算double平均值
*
* @param mapper 映射
* @return {@link OptionalDouble}
*/
public OptionalDouble avg(ToLongFunction<? super T> mapper) {
return stream.mapToLong(mapper).average();
}
/**
* 建造者
*

View File

@ -433,4 +433,13 @@ public class EasyStreamTest {
Assert.assertTrue(EasyStream.of(1).isNotEmpty());
}
@Test
public void testIntSum() {
int sum = EasyStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).sum(Integer::intValue);
Assert.assertEquals(sum,55);
double doubleSum = EasyStream.of(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.10).sum(Double::doubleValue);
Assert.assertEquals(doubleSum,59.6);
}
}