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 e3659496c..b84fefc03 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 @@ -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 extends AbstractEnhancedWrappedStream(stream); } + + + + /** + * 计算int类型总和 + * + * @param mapper 映射 + * @return int + */ + public int sum(ToIntFunction mapper) { + return stream.mapToInt(mapper).sum(); + } + + /** + * 计算long类型总和 + * + * @param mapper 映射 + * @return long + */ + public long sum(ToLongFunction mapper) { + return stream.mapToLong(mapper).sum(); + } + + + /** + * 计算double总和 + * + * @param mapper 映射器 + * @return double + */ + public double sum(ToDoubleFunction mapper) { + return stream.mapToDouble(mapper).sum(); + } + + + + /** + * 计算int平均值 + * + * @param mapper 映射器 + * @return {@link Integer} + */ + public OptionalDouble avg(ToIntFunction mapper) { + return stream.mapToInt(mapper).average(); + } + + /** + * 计算double平均值 + * + * @param mapper 映射 + * @return {@link OptionalDouble} + */ + public OptionalDouble avg(ToDoubleFunction mapper) { + return stream.mapToDouble(mapper).average(); + } + + + /** + * 计算double平均值 + * + * @param mapper 映射 + * @return {@link OptionalDouble} + */ + public OptionalDouble avg(ToLongFunction mapper) { + return stream.mapToLong(mapper).average(); + } + + /** * 建造者 * 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 0f50b8337..1818f061f 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 @@ -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); + } + }